如何在变基时覆盖 patch/commit 而不是跳过它
How to overwrite a patch/commit instead of skipping it while rebasing
同时将一个分支变基到另一个(将 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
) 以消除在变基时产生冲突的补丁。
但我在这里想要的是覆盖来自 dev 的补丁并忽略已经在 master 中的补丁......类似于 (git rebase --overwrite
)
是否有任何这样的选择或任何其他方式来做到这一点?
我不确定您所说的覆盖提交而不是跳过提交是什么意思。要么完整应用提交,要么跳过提交。无论如何,您应该能够在文件级别获得您想要的控制级别。
当变基并遇到冲突时,每个冲突文件有 两个 个父文件。如果你有一些文件 path/to/file.ext
并且你想用 master 版本覆盖,那么你可以使用:
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
重新设置为 master
:
git checkout dev
git rebase master
同时将一个分支变基到另一个(将 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
) 以消除在变基时产生冲突的补丁。
但我在这里想要的是覆盖来自 dev 的补丁并忽略已经在 master 中的补丁......类似于 (git rebase --overwrite
)
是否有任何这样的选择或任何其他方式来做到这一点?
我不确定您所说的覆盖提交而不是跳过提交是什么意思。要么完整应用提交,要么跳过提交。无论如何,您应该能够在文件级别获得您想要的控制级别。
当变基并遇到冲突时,每个冲突文件有 两个 个父文件。如果你有一些文件 path/to/file.ext
并且你想用 master 版本覆盖,那么你可以使用:
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
重新设置为 master
:
git checkout dev
git rebase master