git多用户冲突一
场景:dev 分支修改了 File1,master 分支更新了远端代码后也修改了 File1 的同一个代码块,dev 变基到 master 时会产生冲突
解决方法:
case 1 :如果希望 master 分支完全覆盖 dev 分支的修改,使用如下命令回退后变基:
git reset --hard
git rebase master
case 2 :希望保留 dev 分支的改动。如果 dev 分支的改动没有commit,需要暂存变更,变基后再手动合并冲突,使用命令如下:
git stash
git rebase master
git stash pop // 会有冲突
git diff *** // 手动合并冲突,***代表文件名
git add *** // 修改完成后提交
git rebase --continue // 完成变基
其中 git stash 表示备份当前工作区内容到 Git 栈,并使当前工作区内容与上次提交时一致,更新最新代码,git stash pop 表示从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容,git diff 表示手动 merge 冲突的文件
case 3 :如果本地已经 commit,使用如下命令撤销最近一个 commit,再执行步骤2
git reset HEAD^
git多用户冲突二
场景:用户 UserA 提交了 change A,暂时没有 review,未被 merge 到远端主分支。之后用户 UserB 提交了change B,merge 成功。当 merge change A 时出错
解决方法:
1 . gerrit 上 Abandon change A
2 . 本地撤销此次提交
git reset HEAD^
3 . 更新代码,重新提交