在生产环境使用git pull命令拉取代码的时候,总是提示出现 .git/MERGE_MSG,让人很烦。
虽然每次可以通过输入 esc :q 命令 进行取消,然后完成拉取。但每次这样就很影响效率。
解决办法一: 瞒天过海,欺骗自己法~
只要我没看见这个问题,那么 这个问题就不存在。我们可以通过下面这个命令进行拉取代码,这样就不会提示我们需要merge这个信息提示了。
# 该命令的作用是:将远程仓库 origin 的最新代码合并到本地的 master 分支上,并不打开编辑器要求编辑提交信息 git pull --no-edit origin master # 逐一拆分上面的 git 命令 进行解释如下: # git pull:从远程仓库拉取最新的代码更新 # --no-edit 该参数是可选的,它表示在合并过程中不打开编辑器来编辑合并提交信息。如果省略该参数,则会打开编辑器让你输入合并提交信息 # origin 是远程仓库的名称,通常指向默认的远程仓库 # master 是远程仓库中要拉取变更的分支名称,这里是指要拉取远程仓库的 master 分支
这样操作后,是可以直接拉去代码,而且不再会提示我们让我merge,但是这个问题还是一直存在的。
解决办法二:从根源解决问题!找到问题所在,然后将问题进行彻底处理!
我们在生产环境服务器上 输入 git log 命令 查看git日志 发现了一些异常

发现服务器生产环境的本地的代码 最新推送的代码 在生产环境的仓库里的commit永远在git log中排第二位(应该排第一才对)。
也就是生产环境仓库里的最新的commit提交代码 为 ea269c766c494b2208d125f498c3ce157c8156e8 这个commit。
我们再来看一下我开发电脑上本地 的 git log提交日志截图如下:

通过上图可以看我,在我的开发电脑上 本地git log显示 26472a6129ab0bbb6ed3bfe626930577bb4d763d 这个 commit 在我本地是最新的(这个commit 也就是我们在服务器使用git log查看到排第二位的这个commit)。
这就发现了问题了,生产环境每次去 使用git pull拉取代码的时候都会出现一次.git/MERGE_MSG。让我输入最新的信息。
导致了生产环境的本地的分支 比远程仓库里的分支超前了,所以每次在生产环境使用git pull 拉取代码的时候,都要去输入合并信息,解决冲突。
既然已经知道原因了,那相对来说就比较容易解决了。
解决:
将生产环境中的代码 使用git reset 命令将提交重置为26472a6129ab0bbb6ed3bfe626930577bb4d763d这个commit(注意如果当前分支有最新的 提交那就 将commit换成对应最新的commit的提交id)
# 先执行它 git reset --hard 26472a6129ab0bbb6ed3bfe626930577bb4d763d # 再执行它 git pull origin master
这样执行后 生产环境的本地的代码就和远程仓库的保持了最新一致了。
这样操作后,以后在生产环境再次使用git pull 命令后 就再也不会出现让我们merge的提示了。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。


精彩评论