的情況下在從this問題,我進行git rebase -s recursive -X theirs etc...
和詫異地與以下類型的衝突停止:git的-X「他們的」沒有處理新的/刪除的文件衝突嗎?
- 他們加入
- 他們刪除
- 被我們刪除
是否有某些原因,策略不應對這些?
(我不知道這是顯著,但Git不會報告衝突的輸出,它只是說When you have resolved this problem run "git rebase --continue"
)
UPDATE這裏有一個腳本,並沒有完全複製,但近:
git init
git symbolic-ref HEAD refs/heads/Branch1 #just to get the 'right' branch name
echo Added in A > DeletedByThem.txt
git add -A
git commit -m A
echo Modified in B >> DeletedByThem.txt
git add -A
git commit -m B
echo Modified in C >> DeletedByThem.txt
echo Added in C > DeletedByUs.txt
git add -A
git commit -m C
git checkout -b Branch2
echo Modified in D >> DeletedByUs.txt
git rm DeletedByThem.txt
git add -A
git commit -m D
echo Modified in E >> DeletedByUs.txt
git add -A
git commit -m E
在這一點上,你應該有這樣的:
Branch1: A - B - C
\
Branch2: D - E
我們要的是這樣的:
Branch1: A - B - C
\
Branch2: D - E
所以:
git rebase -s recursive -X theirs --onto [SHA of B] Branch1 Branch2
這再現了「將他們刪除」和問題,「通過我們」中刪除,但不會重現「將他們添加」 ,也沒有任何衝突報告。
據我所知,在「將他們刪除」此背景下這樣的意思是「修飾的B類後,再刪除」(所以我們做想刪除它在店2),並表示「我們已刪除」「創建後B「(所以我們想保留它在Branch2)
從我可以告訴從我的真實(和巨大)回購的歷史,'他們添加'與錯誤地檢測到的重命名(即完全不同的文件夾中的相同文件被標識爲重命名)。
你只是推斷這些是衝突,還是在嘗試應用補丁時報告它們,然後正確解決它們,因此不會在`git status`的輸出中報告它們? – Cascabel 2011-02-08 20:22:11
我想我推斷,因爲rebase停止。 – Benjol 2011-02-08 22:35:27