GIT-强制手动合并原本可以干净合并的分支
我有以下情况GIT-强制手动合并原本可以干净合并的分支,git,Git,我有以下情况 git branch * master git branch upgrade-project git checkout upgrade-project # At this point I run an update script from a third party that replaces # many files I have already modified. git checkout master # I want all conflicts to be mark
git branch
* master
git branch upgrade-project
git checkout upgrade-project
# At this point I run an update script from a third party that replaces
# many files I have already modified.
git checkout master
# I want all conflicts to be marked regardless of weather GIT can merge them automatically.
git merge upgrade-project
存在的问题是,它将干净地合并由升级项目分支的更新脚本替换的所有文件,因为它位于master之前,这在正常情况下非常有意义
我想要的是,当我将upgrade project
合并到master
中时,所有冲突的文件都被标记为这样
这是我可以手动比较,并根据需要进行修改
这可能吗?合并您的分支,但不要提交更改:
git merge --no-commit upgrade-project
清除索引,将更改保留在工作目录中:
git reset
解决标有
升级项目
分公司领先于主机
将升级项目
合并回主项目
将干净地合并(无冲突)。
我想强制所有不完全相同的文件发生冲突
在执行拉取之前,您可以获得要拉取的文件列表:
git checkout master
git diff --name-only upgrade-project
或:
或
最后一个代码示例将为您的每个提交创建一个补丁(要合并的分支之间的差异)。问题是什么?我不清楚。一旦发生冲突,它们将显示为升级项目分支在主分支前面。将升级项目
合并回主项目
将干净地合并(无冲突)。我想强制所有不完全相同的文件发生冲突。只是尝试了一下,但没有成功。只需使用升级项目中的文件覆盖所有文件,因为对于git,只有当无法自动解决冲突时,冲突才是冲突。因此,您可以使用git reset-p
合并延迟提交并清除索引中的一些更改。如果不遵循,我应该何时运行git reset-p
?在合并之后或之前,以及在哪个分支上?在git merge--no commit yourbrange
之后,我这样做了,但它只是打印出没有更改。
在我的情况下,--no commit
选项不起作用,我仍然看不到GIT前后的你可以在拉之前查看文件,如果它能帮助你,我已经根据你的评论更新了答案。立即阅读有没有一种方法可以将差异导出到一个文件中,以便在合并后重新删除?您可以使用git格式的补丁主控程序…升级项目
,但它会根据您的提交生成补丁
git reset --hard
git checkout master
git diff --name-only upgrade-project
git log --stat master ^upgrade-project
git format-patch master...upgrade-project