Git合并了我的一切

Car*_*iel 6 git merge

是否有一个git merge命令将另一个分支合并到当前分支中,但是不会更改任何文件?

或者换句话说,我想在分支A上创建一个新的提交:

  • 与分支A上的最新提交相同的树(文件)
  • 父提交应该是分支A的最新提交
  • 其他父提交应该是分支B上的最新提交

考虑两个长期运行的分支,一个矿,一个他们的.我想将他们的分支合并到我的分支上,但由于代码实际上是这样做的,我想将它标记为合并.下次我再次合并时,它将不会回溯到将在此过程中创建的合并提交.

我知道-X mine/ --strategy-option=mine但只有在发生实际合并冲突时才会启动.不应在我的分支上应用添加/删除的文件.

Rob*_*son 5

如果您绝对确定您不想要theirs,则可以merge不提交就执行,然后mine按原样签出,然后完成合并提交。

git merge --no-commit their-branch
git rm . -rf
git checkout HEAD -- .
git commit
Run Code Online (Sandbox Code Playgroud)

git checkout HEAD -- .将覆盖任何冲突或自动修改的文件。此时执行 agit status应该表明没有任何修改,但您仍然处于合并过程中。在commit随后完成的非合并的合并。

编辑: git rm . -rf

最初,我省略了这个工作流程中能够从 中删除全新文件的任何部分theirs,因为它们git checkout HEAD -- .会保持完整。

该行git rm . -rf确保git删除当时已知的每个文件。这将包括消除其存在的任何文件theirs,但没有ours。然后我们将checkout仅那些来自ours, 并提交由此产生的空合并。