如何覆盖补丁/提交,而不是在重新定位时跳过它

时间:2017-05-09 05:37:56

标签: git rebase

将分支重新定位到另一个分支(将 $result1 = $sql->runQuery1(); while($record1 = mysqli_fetch_array($result1)) { $result2 = $sql->runQuery2(); echo "$record1['id'] : "; while($record2 = mysqli_fetch_array($result2)) { echo "$record2['id'] <br> "; } } 分支定位到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". )以消除在重新定位时产生冲突的补丁。

但我想要的是从dev中覆盖补丁并忽略已经在master中的补丁...类似于(git rebase --skip

有没有这样的选择或任何其他方式这样做?

1 个答案:

答案 0 :(得分:1)

我不确定覆盖提交而不是跳过它是什么意思。完整地应用提交,或者跳过提交。在任何情况下,您都应该能够在文件级别获得所需的控制级别。

当变基和遇到冲突时,每个冲突文件都有两个父项。如果您有一些文件path/to/file.ext并且想要使用版本覆盖,那么您可以使用:

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

如果您想使用同一文件的 dev 版本,那么您可以使用它:

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

这个答案假定您在问题中描述的情况,即您在dev {@ 1}}上从后一个分支重新定位:

master