适用场景:
两个开发者 A 和 B 同时克隆了同一个远程仓,两人都在本地分支进行修改,并将修改推送到远程仓库。开发者 A 先推送了他的分支到远程仓库,开发者 B 在推送自己的分支时,由于此时远程仓库已经发生变化,可能与他本地的分支不一致,因此Git会拒绝推送。
使用流程和方法:
方法一:使用git pull
按照git的冲突错误提示,先pull更新本地代码本地解决冲突后push到远程,注意解决完冲突后再pull一下防止张三有传了新东西到远程仓库的同一个分支。然后push一下就万事大吉了,如果还是不放心可以用git log看一下日志咯
$ git add .
$ git commit -m "...."
$ git push <远程仓库名> <本地仓分支名>:<远程仓分支名>
若有冲突会提示 error: This is usually caused by another repository pushing to the same ref
如果出现错误提示就先按照错误的提示pull最新代码然后你就会发现你的分支名后面变成了
(merge-dev|MERGING)
这样不要慌先在本地解决一下冲突,使用git status查看一下冲突的文件然后随便用一个编辑器进入冲突的文件
手动解决冲突然后执行命令
git add .
git commit -m '提交解决冲突的代码'
git push到远程就好了
方法二:使用git fetch+git merge(git pull = git fetch+git merge)
1. 在本地创建一个临时分支 temp,并将远程仓分支上的更新拉到 temp
$ git fetch origin <远程仓分支名>:temp
2. 返回到你的分支比如是dev,就git checkout dev,将 temp 合并过来
$ git merge temp
3.开始自动合并如果内容有冲突会返回error需要手动解决冲突
手动解决冲突然后执行命令
git add .
git commit -m '提交解决冲突的代码'
git push到远程就好了