使用git stash来解决Git的冲突问题

使用git stash来解决Git的冲突问题

参考文档

提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的?

冲突发生的原因

诸如公共类的公共方法,和别人同时修改同一个文件,他提交后我再提交就会报冲突的错误。发生冲突,在IDE里面一般都是对比本地文件和远程分支的文件,然后把远程分支上文件的内容手工修改到本地文件,然后再提交冲突的文件使其保证与远程分支的文件一致,这样才会消除冲突,然后再提交自己修改的部分。特别要注意下,修改本地冲突文件使其与远程仓库的文件保持一致后,需要提交后才能消除冲突,否则无法继续提交。必要时可与同事交流,消除冲突。发生冲突,也可以使用命令。

解决方法一

解决冲突的方法:

  • 通过git pull拉取远程仓库文件到本地仓库,如果发生冲突会提示,根据提示解决冲突

例如:

这是远程仓库abc.txt文件的内容:

这是本地仓库abc.txt文件的内容(注意:该文件需要执行git add与git commit命令提交到本地仓库):

现在要将远程仓库的文件拉取到本地通过git pull命令,如下会报冲突错误:

打开本地仓库的abc.txt文件

需要手动解决冲突。

解决冲突后,提交到本地仓库后,再推送到远程仓库

在远程仓库查看

解决方法二

解决冲突的方法:

  • 通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
  • 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
  • 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中;

冲突一般发生在将远程仓库中的文件拉取到本地仓库中,有同名文件,而内容不同的情况下。

这是远程仓库abc.txt文件的内容:

这是本地仓库abc.txt文件的内容(注意:该文件是保存在工作区的,即不执行git add命令,不保存到暂存区甚至本地仓库中):

(可以看到当前修改并没有保存到暂存区)

通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改

(执行完上面命令后,abc.txt文件内容变成了未修改前,即上一次commit提交的内容)

通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突

通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中

然后手动解决冲突,再通过git push推送到远程仓库

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/110743787
今日推荐