在执行`git pull`命令后,我需要提交所有修改过的文件吗?

5
我想将我的分支合并到master。我已经提交了在我的分支上所做的所有更改,并切换到了master。我需要执行git pull以确保我是最新的,但是当我尝试git merge mybranch时,出现以下错误:

错误:由于存在未合并的文件,无法合并。

git status显示了很多修改过的文件,可能是由最近的拉取操作造成的。我应该执行git add .和`git commit -m“something??”,还是有更好的处理方式?对于那些已经由各自作者提交了自己的更改,进行一次提交似乎很奇怪?
2个回答

3
不要使用git pull命令,它只会让你感到困惑。嗯,我认为它已经让你感到困惑了!git pull的作用是运行git fetch(从其他Git获取新提交),然后是第二个Git命令。通常的第二个Git命令是git merge。看起来你已经运行了这两个命令。在这种情况下,你运行了git fetch origin然后是git merge origin/master
此时发生的情况可能是第二个命令失败了。但是,由于你不知道git pull的意思是git fetch && git merge,所以你只看到了一个奇怪的错误,说你正在合并。现在你想合并其他东西,但你不能,因为你仍然处于先前失败的合并过程中。
如果你运行了git fetch origin,你会看到它工作正常。然后你会运行git merge origin/whatever并看到它失败,并知道你必须完成这个合并,或者放弃它,或者重新设置基础,或者在这个点上做任何你喜欢的事情,然后才能git merge另一个分支。 git pull命令旨在提供方便,是执行这两个Git命令的快捷方式,因为git fetch几乎总是会跟随git mergegit rebase。当Git最初被构建时,他们只做了用户前端的git pull,它使用了隐藏的后端git fetch。但事实证明,将这两个步骤分开通常非常有用,这样你就可以(例如)查看你已经fetch了什么。他们使git fetch可由普通人使用(好吧,和其他Git命令一样,尽可能地让人能用:-)),现在git pull只是方便而已。虽然它确实很方便,但像现在这样不是那么方便。

1

是的,这是一种方法:首先进行pull(git将尝试自动合并已拉取的文件),或者fetch - 然后您将需要手动执行merge。完成合并后提交您的更改,然后推送所有更改。

还有另一种方法,git rebase。我更喜欢它,但这取决于您和您的团队如何使用git,因此在您的情况下可能不是正确的工具。


这个拉取提交是否有规范的提交消息? - 1252748
还有一点需要澄清,合并之后,我的下一步操作(如果不是变基):git add . git commit -m "post pull commit" git merge my-branch - 1252748
1
规范的提交信息应包含合并关键字(这也是git默认建议的提交信息,格式为“Merge (...)”)。具体步骤如下:1. 解决合并冲突,2. git merge,3. git commit -m,4. git push。由于这些文件已经被添加到仓库中,因此不需要使用git add命令。 - syntagma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接