遇到冲突了怎么解决? - Git 进阶指南

文章推薦指數: 80 %
投票人數:10人

你可以直接用编辑器打开冲突的源文件进行修改,但需要注意删除冲突标记,你也可以使用体验更加友好的Three-Way Merge 工具,借助 git mergetool 命令来完成。

Git进阶指南Search…前言概念GitSSHKeys配置GitAliasCheatSheetorigin与upstreamGitStash与gwipGitTag与DescribeSubtree与SubmoduleCherryPick的使用场景常见问题如何配置多个提交用户?如何撤销修改?遇到冲突了怎么解决?如何配置gitmergetool?fetchpullmergerebase的关系分支操作流示例其他问题汇总PoweredByGitBook遇到冲突了怎么解决?两个分支进行合并时,可能会遇到冲突,同时被修改的文件会进入bothmodified状态,需要解决冲突。

1、最快的办法大部分时候,「最快解决冲突」的办法是:直接选择当前HEAD的版本(ours),或合并进来的分支版本(theirs)。

1#使用当前分支HEAD版本,冲突源文件的<<<<<<#gco--ours3​4#使用合并分支版本,冲突源文件的>>>>>>>标记部分5gitcheckout--theirs6​7#标记为解决状态加入暂存区8gitadd#gaCopied!2、最普通的办法你可以直接用编辑器打开冲突的源文件进行修改,但需要注意删除冲突标记,你也可以使用体验更加友好的Three-WayMerge工具,借助gitmergetool命令来完成。

如何配置gitmergetool?请参见后续章节。

3、好的习惯以下好的习惯,可以减少代码的冲突的发生:在开始修改代码前先gitpull一下;将业务代码进行划分,尽量不要多个人在同一时间段修改同一文件;通过Gitflow工作流也可以提升git流程效率,减少发生冲突的可能性。

4、最复杂的情况如果你的项目周期比较长,还应该养成「定期rebase的习惯」,gitpull--rebase可以让分支的代码和origin仓库的代码保持兼容,同时还不会破坏线上代码的可靠性。

它的大概原理是,先将origin仓库的代码按origin的时间流在本地分支中提交,再将本地分支的修改记录追加到origin分支上。

如果发生冲突,则可以即时的发现问题并解决,否则到项目上线时再解决冲突,可能会发生额外的风险。

rebase大概的操作步骤如下:1#将当前分支的版本追加到从远程pull回来的节点之后2gitpull--rebase#gup3​4#若发生冲突,则按以上其他方法进行解决,解决后继续5gitrebase--continue#grbc6​7#直到所有冲突得以解决,待项目最后上线前再执行8gitpushorigin#ggp9​10#若多次提交修改了同一文件,可能需要直接跳过后续提交,按提示操作即可11gitrebase--skip#grbsCopied!需要注意的是,rebase默认以bog-standardflattening模式将提交的时间线进行扁平化处理,如果希望保留两个版本的合并记录,可以使用gitpull--rebase=preserve参数,或直接将该参数设置为全局配置:1gitconfig--globalpull.rebasepreserveCopied!常见问题-Previous如何撤销修改?Next-常见问题如何配置gitmergetool?Lastmodified3yragoCopylinkContents1、最快的办法2、最普通的办法3、好的习惯4、最复杂的情况



請為這篇文章評分?