萧山中兴建设有限公司网站,视频模板,WordPress导航栏目删除,淄博网站建设设计公司一、前言
一直习惯于 add commit push 的三步走#xff0c;偶然间看到了一个评论说在 push 之前还有一个 pull#xff0c;小小的疑问就埋在了我的心里。于是我就先了解了 pull 的工作原理#xff0c;就是先拉取代码#xff08;fetch#xff09;再合并分支#xff08;mer…一、前言
一直习惯于 add commit push 的三步走偶然间看到了一个评论说在 push 之前还有一个 pull小小的疑问就埋在了我的心里。于是我就先了解了 pull 的工作原理就是先拉取代码fetch再合并分支merge的过程简而言之就是在本地进行项目编写时他人也在其他地方进行项目编写并且提前进行了 push 操作使得当前的云端文件比我克隆下来的文件版本更加新那么进行合并就会因为冲突被拒绝rejected。因此才需要先更新项目pull再进行我的 push。那么问题来了如果别人编写的内容与我编写的内容在源文件的同一个地方那不就出问题了吗于是有了这篇文章
二、项目演示
我们通过 github 上的 Network 进行可视化讲解。假设现在我们有一个本地项目、github 空仓库、本地仓库提交记录如下 第一次 push 后我们查看 Network 效果如下 已知 test.md 文件中内容现在是这样的 2.1 没有冲突时
现在我们在本地对 test.md 文件进行编辑编辑后如下 然后在 github 上对该文件的 其他地方 进行编辑并 push模拟 别人更早更新项目代码但是不冲突 的情况如下 现在我们在本地进行提交操作显然会报错因为远程已经更新 现在我们需要进行合并也就是执行 pull再 push 即可由于合并后会产生一个新的结点因此会弹出 vim 界面让你编写 comment 然后就成功 pull 了代码之后再 push 就没问题了 我们来看一下现在的 test.md 是什么样的 可以发现内容进行了合并现在的 Network 图如下 2.2 有冲突时
为了更加直观的展示我们在原有的基础上多增加几个正常结点当前 Network 如下 然后我们在本地对 test.md 文件进行编写 然后在 github 上对该文件的 相同地方 进行编辑并 push模拟 别人更早更新项目代码但是发生冲突 的情况如下 然后 add、commit在视图 pull 进行合并时出现了问题 提示我们修复冲突后再进行 commit同时分支名变成了 main|MERGING 状态本地试图 push 的代码也出现了变化如下 我们也可以使用 git diff 或 git status 来查看冲突 其中 和 之间是 HEAD 的代码 和 之间是 main 的代码git 对冲突内容主动进行了错位我方最新内容在上也就是 HEAD 的代码分支最新内容在下确保不会再冲突。我们根据实际情况解决冲突内容如下 然后我们重新 commit 并加上 -a 参数后进行 push 最终 test.md 内容如图 最终 Network 如图 三、总结
总的来说就两句话
当我的改动与最新项目的改动没有重叠时pull 后就直接进行合并当我的改动与最新项目的改动有重叠时pull 后解决冲突然后执行下方命令即可 git commit -a -m commentgit push