簡體   English   中英

我如何 git rebase 第一次提交?

[英]How do I git rebase the first commit?

我使用git init創建了一個新的 repo,然后進行了三個提交。 現在我想 rebase 回去修改我的第一次提交,但是如果我做git rebase -i HEAD~3它會抱怨! 如果我用HEAD~2嘗試同樣的方法,那么它有點工作,但只讓我重新排列最后兩個提交。

我如何引用“在有任何提交之前提交”或返回並插入一個空提交?

最簡單的方法,使用足夠新的 git(這已經很長時間了,所以你應該擁有這個):

git rebase -i --root

另一種簡單的方法,正如twalberg 在評論中指出的那樣,是使用git checkout --orphan設置以進行新的根提交,您可以在其上復制舊提交。 (無論如何,這就是rebase -i --root最終在內部執行的操作。)

如果您想對已經在提交中的文件進行更改、編輯作者/消息等, torek 的回答很好。但是如果您想拆分提交或類似的東西,那么您很可能會遇到麻煩,因為您無法從初始提交中執行git reset HEAD~

為了使這成為可能,您可以像這樣插入一個空的初始提交:

git checkout --orphan empty-initial-commit
git commit --allow-empty -m 'Empty initial commit'
git checkout <branch>
git rebase empty-initial-commit
git branch -d empty-initial-commit

然后你可以做git rebase -i ,編輯提交(第一個非空提交),然后像往常一樣做git reset HEAD~

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM