2017-04-20 70 views
0

所以分支-A已經git的合併不加入從分支A到分支B中的文件,並說,這是已經是最新的

src/fileA 

分支-B具有

src/filaA 
src/fileB 

當我這樣做git checkout branch-A然後git merge Branch-B它說Already up-to-date並沒有任何反應,也不會從b添加文件A.

此外,我不知道這是否是相關的,但branch-A是從先前作出承諾從branch-B

有點像這樣:

 B 
    /  
---A0---A1(deleted and added some stuff here)---A 

我試圖合併B,其中A添加在A1刪除,同時保持從東西A1

添加的東西
+0

顯然你沒有提交。 –

+0

@TatsuyukiIshi我沒有做什麼提交?檢查github.com我可以看到,兩個分支都處於我提到的狀態 – Jose

+0

檢查什麼已經合併:git log --graph --oneline --decorate branch - 分支-B告訴你什麼? (或者使用一些圖形瀏覽器來查看'branch-A'和'branch-B'的狀態) – LeGEC

回答

2

我認爲你誤解了合併。

合併不合並只是合併分支,它合併更改引入這些分支。

讓我們來看看你做了什麼。

  1. 你有乙
  2. 然後你支了
  3. 你做的東西在A,就像刪除文件
  4. 然後您嘗試合併B插入一個

你現在希望能夠恢復你刪除的文件。這不是合併會做的事情。合併將嘗試您創建了一個爲A.

如果修改乙支路的文件後,合併基於B 進行更改,然後嘗試合併,你會得到一個合併衝突,因爲該文件在刪除一個分支並在另一個分支中修改

如果您自從創建A之後未在B分支中修改該文件,則A會針對此文件贏得合併,該文件將保持刪除狀態。

這是如何合併應該如何工作。

如果你想恢復A分支上的文件,你應該(部分)恢復刪除它的提交。

+0

'如果你想在A分支上恢復文件,你應該(部分)恢復刪除它的提交。還不夠好,恢復會帶回文件,但也會刪除我在A中完成的更改。然而,你的答案爲我澄清了,我只需要在B上做一個「虛擬」提交(只需在任何文件中添加1行),這樣B就會優先於A,並且我可以有效地合併它們,獲得合併衝突並解決它做我想做的事。不知道這是否是「正確」的方式去做,但它的工作,謝謝! – Jose

相關問題