需求:我在A分支上面開發了一個功能,突然B分支說也需要這個功能,但是不想要合並A分支上所有的代碼;只需要合並這一個功能對應的代碼
方案:
1. 在A分支上通過git log 查看日志;將自己提交的該功能對應的hash值整理出來;
git log
2.如果本地沒有B分支,需要先將B分支從遠程倉庫拉到本地倉庫(如果本地有B分支,並且已與遠程對應的B分支已關聯;無需這一步,直接到下一步)
git checkout --track origin/B
3.切換到B分支
git checkout B
4.在B分支上操作:通過git cherry-pick <commit對應的hash值>將當前hash對應提交的代碼合並到B分支上去
git cherry-pick b5dc0dd
如下圖;為了防止混淆,本人將該功能對應的提交都記錄下文本文檔了
注意:
1. 單個commit合並
git cherry-pick commitid
2.多個分開的commit一起合並
git cherry-pick commit-id1 commit-id3 commit-id6
3. 多個連續的commit合並
git cherry-pick commitid1..commitid8 將commitid1到commitid8之間的所有提交合並到B分支上(不包含第一個commitid)
每一次合並都可能會產生沖突,如果產生沖突,先解決沖突,然后將代碼commit到本地倉庫即可;
測試無誤之后,再將合並后的代碼push到遠程倉庫。切記!