在主分支我有如下承諾:如何在櫻桃採摘後刪除無主分支中的舊提交?
A-B-C-D-HEAD
在分支 「測試」 我有:
A
我:
git cherry-pick <SHA FOR COMMIT C>
不過,我不想犯B在「測試」分支上。我怎麼能忽略它?使測試分支落得像: AC
在主分支我有如下承諾:如何在櫻桃採摘後刪除無主分支中的舊提交?
A-B-C-D-HEAD
在分支 「測試」 我有:
A
我:
git cherry-pick <SHA FOR COMMIT C>
不過,我不想犯B在「測試」分支上。我怎麼能忽略它?使測試分支落得像: AC
你可以這樣做:(假設碩士點到d)
1(主)git-checkout -b test
2.(測試)git rebase -i
你將有一個列表提交如下:
pick b6e7d38 A
pick 263b0cc B
pick 6bcea1d C
pick 6kdf8gd D
只需刪除您不需要的提交(此處爲B和D)。保存並繼續,重新綁定時將被忽略。
如果她重新啓動並刪除提交,它們將會從主服務器中刪除。她希望他們在主人面前,但不是在測試。 – 2014-10-01 07:10:04
對不起,但我不同意你的觀點。請參考下面的文檔 你可以通過重新組合你的提交和擠壓你不需要的提交。 參考這裏:http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html – Garima 2014-10-01 07:50:35
我同意,你的方法是完全正確的,但在一個錯誤的分支。如果您重新設置master分支並刪除D和B,那麼它們將會消失。你的方法是正確的,如果她這樣做,而在測試分支,其中測試已發源於主高手指向D. 我編輯答案爲rebase -i主人本來是她的混亂 – 2014-10-01 09:30:04
根據我的最佳選擇將是git format-path
。
第一步:(主)git format-patch -2
步驟2:(主)git checkout -b test <SHA of Commit-A>
步驟3:(測試)git am 0002-Commit-Msg-of-C
你是好去!
說明:步驟1將創建2補丁文件,一個用於提交d,一個用於C.在第三步要應用的補丁過一陣提交-C製成(改變)(測試點A,步驟2)
希望這會有所幫助!
PS:如果您在B中的更改與C中的更改無關,則這將起作用。
全部那需要的是'git cherry-pick'。 – Jubobs 2014-10-01 08:59:54
您是否只希望在測試分支上提交C?或測試分支上的A和C? – 2014-10-01 05:36:31
您需要編輯您的問題以顯示您的測試分支相對於其他提交的位置。 – 2014-10-01 05:37:20
更新了問題。謝謝:) – Sara 2014-10-01 05:38:39