冲突产生原因
本地提交
远端更新,本地有变化,推送产生冲突(远端版本和本地版本冲突)
远端不变,本地有变化,推送成功(远端版本低于本地版本)
本地拉取
远端更新,本地无变化,拉取覆盖本地(远端版本高于本地版本)
远端更新,本地有变化,拉取产生冲突(远端版本和本地版本冲突)
远端不变,本地有变化,拉取不会产生变化(远端版本低于本地版本)
分支合并:
资源分支版本高于目标分支,合并,资源分支覆盖目标分支
资源分支版本低于目标分支,合并,提示Already up-to-date,目标分支不变
资源分支和目标分支同时改动,两个版本不统一,冲突,需手动解决
避免合并冲突:
如果目标分支(例如master)被保护起来,其他分支只能通过发起mergeRequest合并请求来合并的话,目标分支的版本始终是低于资源支的,也就不会产生冲突文件了,这样既达到了保护重要分支的目的,也解决了合并冲突的问题。
不会冲突的习惯是,修改文件之前先merge 别的分支。
命令行冲突解决
如果是推送冲突,想要解决冲突,只能先拉取远程最新版本,然后添加更改推送。
如果是拉取冲突,可以直接覆盖拉取
方法一(推荐使用):
出现冲突后远程下载合并覆盖本地文件(带《《《《,手动解决)
git push origin master
出现冲突
git pull –rebase origin master
将远程文件下载下来(如果一致REBASE,可以使用git rebase --skip)
手动解决冲突文件
重新git add和git commit –m “”
方法二:
git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m ‘注释’ 最后git push到远程
(通常git stash 和git stash pop联合使用)