冲突的解决
如果你在使用git的时候还不是很熟练, 那么在遇到push操作无法完成的情况时, 最好在尝试pull之前采取行动, 你可以选择在本地创建一个全新的分支, 并且将这个新分支的更改情况commit到本地的仓库中, 这样做能够保证你的本地仓库中存在这样的commit记录, 即便后面出现了什么意外状况, 你也还有可能找回那些代码, 进而避免了代码丢失的风险。
更严重的是, 应该把整个文件夹都进行备份, 以免将来因为寻找不到代码而感到非常开心(注: 此处原文为反讽语气, 实际应为避免丢失), 这种局面是我们所不愿意看到的。
当多个开发人员共同进行开发工作的时候, 在Git工具下面会发生冲突现象产生, 以及关于该现象需要解决。
演示
这个项目里面存在着一个名为test.txt的文件, 这个文件所包含的具体内容如下所示, 这部分信息是从github平台上面的仓库当中截取获取来的。
1、为了保证项目正确, 需要先将其拉到最新版本。
2、修改local的test.txt的文件内容,修改后的内容是:
接着, 在本地对状态进行检查, 并将相应的更改提交到本地的代码仓库里面去。
3、 在完成对test.txt的修改操作, 并且执行完成相关的推送工作之后, 再进行后续的步骤。
(以下是我直接在github的这个仓库里面进行编辑, 并且直接提交的那份内容)
去查看远端的提交记录, 可以看到有一次新的提交出现了。
这就导致了冲突, 原因在于本地电脑里的那个叫test.txt的文件的具体状态和远在服务器的同文件版本没有保持一致。
4、将本地已经提交的更改内容进行推送操作的时候, 发现了推送无法完成的情况。
发现需要先执行git pull操作, 于是先将代码进行更新处理。

在进行了拉取操作以后, 给出了非常明确的错误提示信息。这个信息是“自动合并失败;请修复冲突内容, 然后提交最终结果。”。
在此刻, 针对test.txt这个文件的内部所含有的内容进行查阅的操作。
在这当中, > commit-id 这个部分, 它指代的其实就是远程仓库里面所包含的内容。
这句话的意思, 其实和svn这种操作方式是比较类似的。
为了解决可能出现的冲突问题, 我们需要执行删除相关注释的操作, 并且要保证最终推送到版本库的 test.txt 文件的内容是确定的最后版本内容。
对test.txt这个文件里面, 在处理那些冲突的情况之后, 它所拥有的内容进行一个修改的操作:
非常特殊的一个现象是, 即便你已经在
5、冲突解决后,在git status可以看到当前的文件状态:
这里有一件事情是必须要格外留意的, 就是当前的整个分支现在会处在一个叫做MERGING的那种状态之下, 还有呢, 就是那个刚才在处理冲突的时候所涉及到的文件test.txt是存在于Unmerged paths这个状态之下的。
请你根据事先给定的那些提示, 先使用git add test.txt这条命令去做相应的操作, 接着再做git commit这件事, 最后再去执行git push这个动作。
此时去看remote中的test.txt内容和commit log:


Copyright C 2023 All Rights Reserved 版权所有 聚才人才网 浙ICP备19034137号-11
地址:浙江省湖州市长兴县 EMAIL:859552203@qq.com
Powered by PHPYun.