2017-05-09 61 views
0

雖然重訂一個分支到另一個(基礎重建dev分支到master),如下如何覆蓋補丁/提交的,而不是跳過它,而基礎重建

git checkout dev 
git rebase master 

如果發生衝突,那麼我們會看到以下選項

The copy of the patch that failed is found in: .git/rebase-apply/patch 

When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 

現在,爲了解決矛盾,我們可以手動編輯文件或跳過補丁(git rebase --skip),以消除所造成衝突,而基礎重建的補丁。

但我想這裏是覆蓋從開發補丁,而忽略其處於主已經是補丁...像(git rebase --overwrite

的東西是否有這樣的選項或任何其他方式做,所以?

回答

1

我不知道你的意思是覆蓋提交而不是跳過它。提交可以全部應用,也可以跳過。無論如何,您應該能夠在文件級別獲得所需的控制級別。

當重新綁定和遇到衝突時,有衝突的每個文件有父母兩個。如果你有一些文件path/to/file.ext,你想與版本覆蓋,那麼你可以使用:

git checkout --ours path/to/file.ext 
git add path/to/file.ext 

如果你想使用開發版本相同的文件,那麼你可以使用此:

git checkout --theirs path/to/file.ext 
git add path/to/file.ext 

這個回答假設你在你的問題,即你master重建基礎dev所描述的情況,從後者分支:

git checkout dev 
git rebase master 
+0

是的,這是我正在尋找。我的意思是覆蓋提交只不過是'git checkout - 他們的'。因爲'git checkout --ours '類似於'git rebase --skip' – newbie

+1

好的,但記住如果你跳過整個補丁,它意味着_every_文件,而我的答案只是告訴你如何跳過_single_文件。 –

+0

哦,是啊!所以更確切地說'git rebase --skip'類似於'git checkout --ours .' – newbie