在我的公司我們最近搬了git。在這個環境中工作的過程中,我最終做了一堆本地提交(在我的本地分支)。爲了保持我的代碼更新,我做了拉。現在最終的結果是,當我做一個git日誌時,我發現我的提交以及其他開發人員在該日誌中的提交。在將我的提交推送到遠程之前,我想收集所有本地提交併將它們合併爲一個提交(以減少日誌中的噪音)並將其推送到遠程。我怎麼在git中做到這一點?如何獲取一堆我的git本地提交併將它們合併爲一個提交?
回答
git fetch <remote name>
git rebase -i <remote name>/<branch name>
有關如何使用rebase -i
(交互式衍合)的詳細信息,請參閱本指南:
http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
注意,重定基/擠壓並不總是發揮很好地與合併提交。在合併之後,重定位會經常移動您的提交,因此合併提交可能會消失,您不會遇到問題,但如果您合併的內容不在遠程分支中,則需要小心。
您應該改變方法。在本地分支上開發時,您不應該執行任何池(或提取)。而是嘗試更新「主要」開發分支,然後不時更新(git rebase)您的開發分支與「主要」分支。
現在也許git cherry-pick可能是你在找什麼。
你也可以嘗試手動重置(git reset --soft)到給定(開發)分支上的第一次提交),然後只選擇下一次提交的提交。
如果你只有你的分支問題上的提交更簡單:你可以壓扁那些(git squash)。爲了不在開發分支上創建太多的提交,一些方法也會改變你的提交(git ammend)。
要做的最簡單的事情是,一旦你完成了git pull
並且你已經解決了所有衝突並且都是最新的,請將分支指針重置爲最新的遠程提交(我假設爲origin/master
),然後做一個新的提交。
git reset --soft origin/master
git commit
新提交將作爲遠程主提交之上的一個新提交進行所有更改。然後您可以將此提交推送到遠程。在推送前使用git show
驗證提交。
注:這是假設你只從一個共享分支(master
)拉,或者你已經拉到任何其他共享分支機構已合併到遠程的master
。
我喜歡它。比'git rebase -i'少一點麻煩。 – jszakmeister
- 1. git - 將一系列提交合併爲一個提交
- 2. git撤消合併提交另一個合併提交
- 3. git合併重新提交提交到另一個提交?
- 4. 如何將兩個git提交合併爲一個?
- 5. 將本地Git提交到git-svn的一個提交中
- 6. Git:只合並一個提交
- 7. 如何將提交與git interactive rebase中的下一個提交合並?
- 8. 有沒有辦法將幾個git提交合併爲一個提交?
- 9. 爲什麼git提示我提交後合併提交消息?
- 10. 在Git上將一組提交合併爲一個
- 11. 在Git中將幾個提交合併爲一個
- 12. 的Git合併提交
- 13. git:合併兩個分支並提交提交
- 14. 將下一個提交的更改合併到當前提交
- 15. git提交併推送本地git文件夾,無需合併
- 16. Git合併細節提交
- 17. Git合併提交丟失
- 18. 強制git合併提交
- 19. Git合併跳過提交
- 20. Git合併分支提交
- 21. Git:合併一系列本地提交到子樹分支
- 22. Git恢復合併,再加上一個提交重新合併
- 23. Git合併有選擇地提交
- 24. Git在合併之前合併提交
- 25. 合併提交提交
- 26. 如何將兩個非順序的git提交合併爲一個?
- 27. 如何在git的開發分支中合併本地提交?
- 28. 爲什麼我不能將提交合併爲一個?
- 29. git:在我提交了一個rebase命令後,他們提交
- 30. git修改併合並一個不在主的提交
即使您拉入上游中間分支,Git實際上也非常聰明,只要您重新設置的內容包括您在此期間提出的任何內容。 – Amber
這是真的,但在這種特殊情況下,一切都取決於從哪些分支提交的內容以及應該合併的內容。如果兩者相同(或者兩者的提交相同,則更一般),這是正確的。如果沒有櫻桃挑選應該工作。 – codewarrior