2017-05-09 97 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