當解決一個文件,我可以相應的Git結帳我們/他們的子模塊
git checkout --ours filename
,然後提交的文件有衝突。這將解決衝突。但是,
git checkout --ours submodule
似乎不工作。子模塊的引用提交不會更改。
解決子模塊引用中的衝突時,等效於git checkout --ours filename
會怎樣?
當解決一個文件,我可以相應的Git結帳我們/他們的子模塊
git checkout --ours filename
,然後提交的文件有衝突。這將解決衝突。但是,
git checkout --ours submodule
似乎不工作。子模塊的引用提交不會更改。
解決子模塊引用中的衝突時,等效於git checkout --ours filename
會怎樣?
Considering your next question,你可以嘗試的三個階段中的一個結帳你子模塊:
git checkout -1 -- submodule # common ancestor
git checkout -2 -- submodule # source
git checkout -3 -- submodule # destination or MERGE_HEAD
一旦一個子模塊的gitlink已經改變,別忘了git submodule update
,刷新其內容。
的OP Amiramix是指這個quora answer,其中Berk D. Demir,在Facebook的生產工程師,補充道:
git checkout -1 file
...將從兩個分支的祖先簽的文件。
這既不是「我們的」也不是「他們的」。這是兩個分支分開之前的文件版本。非常方便。如您所知,參數
-2
用於HEAD版本,-3
版本相應地爲MERGE_HEAD
。通過其他所有git命令到達這些文件的另一種方法是使用提交的符號引用。
git checkout MERGE_HEAD -- file
與--theirs
或-3
的效果相同。處理合並衝突時的另一個方便語法是冒號階段冒號前綴到路徑。
git show :3:file
將顯示來自MERGE_HEAD
的文件(不是差異)。一個微小的小抄:
-1 == $(git merge-base HEAD MERGE_HEAD)
-2 == --ours == HEAD
-3 == --theirs == MERGE_HEAD
這可能與GIT 1.7.1的問題。在替代樹('-2','--ours'和'HEAD')中,只有'git checkout HEAD子模塊'做它應該做的事情。也許所有這三個都適用於更新版本的git。 – Amiramix