如何解决在同一分支上工作时,合并未更改文件的冲突
两个人A和B在同一个分支上工作。
人员A将文件X上的更改推送到分支。人B尚未触摸文件X并进行了git pull
。
这导致文件X上发生合并冲突。
为什么会发生这种情况,乙人如何避免或处理这种情况?
解决方法
与远程分支机构的历史记录相比,人员B应该检查其本地分支机构的历史记录:
git log --oneline --graph <branch> origin/<branch>
# you possibly want to only see what commits impacted file X :
git log --oneline --graph <branch> origin/<branch> -- X
# generic shortcuts :
# - "the commit I'm currently on" is HEAD
# - "the tracked upstream branch" is @{u}
git log --oneline --graph HEAD @{u}
我建议使用终端命令来查看历史记录,大多数GUI前端还允许查看多个分支的组合历史记录。
可能性包括(但不限于):
- 人员A使用
commit --amend
或rebase
提交更改,并使用push -f
上传更改, - 人B在拉动之前已重写了她的部分本地历史记录(例如
commit --amend
或rebase
)。
我真的不知道如果不更改历史记录怎么会发生冲突,但是也许我忽略了某些可能性。无论如何:历史视图应突出显示某些内容。
“解决”这种情况的最合适方法取决于您在历史记录中看到的情况,一些通用的方法是:
-
人员B可以将其更改基于远程分支的最新版本;如果有多余的提交要删除,她可以使用
rebase --interactive
,并在这些提交之前标记“ drop” -
人B可以简单地解决她所拥有的合并中的冲突;如果她确定文件X的正确版本是人A推送的版本,则可以运行:
# remove the "conflicting" flags :
git reset -- X
# use the version from the remote branch :
git checkout origin/<branch> -- X
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。