git rebase -i
允許通過squash
或fixup
將提交與前一個合併。這兩個選項都需要至少一個提交爲pick
-ed。當想要使用第一次提交但放棄其提交消息時,情況如何?換句話說,如果我希望第一次提交與後續合併,我該怎麼辦?如何將提交與git interactive rebase中的下一個提交合並?
1
A
回答
1
你只需要--root
標誌(可用自1.7.12的Git,即對任何人,除某些無名從不更新的咳嗽* Centos的*咳嗽 Linux發行版)。
考慮到擠壓一個和乙的結果是(排序提交的不相當遵守這個簡單的代數運算,但它適用於我們的情況下)只是A + B。因此,由於B + A = A + B,無論您是否將#1提交到提交#2或提交#2提交到提交#1,都沒有關係。當然,這並不包括壓制在一起的提交的消息,所以讓我們仔細看看。
假設您已運行git rebase -i --root
以便能夠重新綁定包括根提交在內的所有內容。現在,您可以:
pick cb57fdd initial commit
pick 478acbd second commit
更改第二個到squash
和寫入文件並退出編輯器。 Git的南瓜兩個一起提交,並再次帶來了你的編輯器,你可以看到:
# This is a combination of 2 commits.
# This is the 1st commit message:
initial commit
# This is the commit message #2:
second commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Sat Nov 19 14:44:07 2016 -0800
#
# interactive rebase in progress; onto 45bc10c
# Last commands done (2 commands done):
# pick cb57fdd initial commit
# squash 478acbd second commit
(精確的細節取決於你的Git版本,以及當然作爲提交內容)。
既然你是在你最喜歡的編輯器中,很容易構造你想要的任何新的提交消息。例如,你可以刪除整個第一個提交的消息,如果這是你想要的。做到這一點,寫下文件,然後退出編輯器,你就完成了。
0
- 見分行的名稱(比如,
branch-1
)
$ git branch
- 見第一提交哈希並保存其他人(比如第一個提交)
$ git log
- 退房得第一代提交
$ git checkout first-commit
- 更改提交信息
$ git commit --amend -am 'new-commit-msg' --allow-empty
- 現在保存新的提交哈希值(比方說,新commmit)
$ git log
- 回到你的 '分支1' 分支
git checkout branch-1
- 通過
new-commit
$ git replace first-commit new-commit
- 重寫替換
first-commit
所有期貨的提交基於上更換
$ git filter-branch -- --all
- 用力推動你的變化
git push -f origin HEAD
相關問題
- 1. git rebase interactive已經推送提交
- 2. rebase衝突,在git中合併提交
- 3. 如何在rebase期間壓扁(與下一個合併)提交?
- 4. git rebase一次提交
- 5. Rebase/Replay僅合併提交
- 6. git合併重新提交提交到另一個提交?
- 7. git - 將一系列提交合併爲一個提交
- 8. git撤消合併提交另一個合併提交
- 9. 我如何git rebase第一次提交?
- 10. 如何在同一個提交的rebase之後恢復合併提交?
- 11. git rebase在同一分支上合併兩個提交
- 12. 將下一個提交的更改合併到當前提交
- 13. Git rebase:用一次提交修正多個提交
- 14. git:在我提交了一個rebase命令後,他們提交
- 15. git rebase,提交重複
- 16. Git rebase保存提交者
- 17. 如何避免git rebase查殺合併提交?
- 18. 如何使用git pull自動保存合併提交--rebase?
- 19. 如何git rebase合併提交共享遠程分支?
- 20. 刪除舊的提交:`git rebase`導致合併衝突
- 21. Git將多個提交集羣集合成一個提交
- 22. 的Git合併提交
- 23. Git:只合並一個提交
- 24. 如何將兩個git提交合併爲一個?
- 25. 將本地Git提交到git-svn的一個提交中
- 26. git rebase在todo中提交每次提交的文件
- 27. Git的平分與合併提交
- 28. git:合併兩個分支並提交提交
- 29. 有沒有辦法將幾個git提交合併爲一個提交?
- 30. GIT rebase - 多個提交到一個 - 仍在歷史中看到
這是在第一次提交中編輯* message *的一種方法,但它不會壓縮與另一次提交一起提交的內容,這是OP要求的。 (如果你打算使用'git filter-branch',你也可能不需要使用'git filter-branch',因爲你可以在'git filter-branch'命令中完成整個工作,使用'--msg-filter',它由''if [$ GIT_COMMIT =];然後cat/tmp/newmsg; else cat; fi''或類似。) –
torek