2017-01-26 75 views
1

請參考下圖:如何安全刪除已經從分支中刪除的主文件?

my-branch  A---B---C---D 
      / \ 
master  E---F---G 

在合併從BG我無意中添加的文件到master,我使用git rmmy-branch刪除在D。不幸的是,我在C工作,這還沒有準備好與主人合併。我可以安全git rmmaster中的文件,並仍然合併my-branch(文件已被刪除)到master以後?

換句話說,通過合併BG,我添加了文件給主人在提交G,我不想。這些文件是'd從my-branchD,但我不想合併D到主,因爲C包含尚未就緒的更改。最好的方法是什麼?

回答

2

如果D提交只包含rm'ed文件,那麼我會在C提交之前移動它,然後將它合併到master中。

在這種情況下,這將是git rebase -i HEAD~2然後重新排序提交把d C.之前,您可以然後合併成d主與

A---B---D---C / \ E---F---G---H

結束如果d有其他的變化,那麼你應該重做提交,以便它只包含rm'ed文件,然後重新排序它們。

如果您已經發布my-branch,那麼任何牽扯它的人都會以包含CD的現有更改的合併結束。在這種情況下,我會選擇D到master,以便在合併my-branch之前刪除文件,然後在合併到master時處理一個微不足道的合併衝突。國際海事組織(IMO)最好先處理一下衝突,而不是現在其他人處理衝突。

+0

那麼...如果我通過提交'D'發佈了'my-branch'會怎麼樣?這是否會通過重寫歷史記錄來引起任何頭痛?編輯:也許它會好起來的,因爲D只包含rm'ed文件... – scherm

+0

編輯我的答案爲這種情況。如果其他人擁有該分支,那麼最終會爲他們創建奇怪的合併。 –

0

如果您對使用交互式底圖不熟悉或不舒服,您可以在提交G創建分支並選擇D.然後將您的分支合併到主控中。

相關問題