在'git pull`之后我是否提交了所有修改过的文件?

时间:2017-05-24 15:45:16

标签: git github gitlab

我想将我的分支合并到master。我已经将我的分支上的所有内容都交给了主人。我需要git pull来确保我及时更新,但是当我尝试git merge mybranch时,我收到了错误

  

错误:由于您有未合并的文件,因此无法合并。

git status显示了很多被修改的文件,大概来自我最近的拉动。我应该做git add .`git commit -m"什么?",或者最好的方法是什么?为一组已经由各自作者提交自己的提交的更改进行提交似乎很奇怪?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

不要使用git pull。这会让你感到困惑。好吧,我认为它已经了!

git pull执行的所有操作都是git fetch(从其他Git获取新提交),然后是第二个Git命令。通常的第二个Git命令是git merge。看起来你已经运行了这两个命令。在这种情况下,您运行git fetch origin后跟git merge origin/master

此时可能发生的事情是第二个命令失败。但是,既然你不知道git pull 意味着 git fetch && git merge,你所看到的就是这个奇怪的错误,它抱怨你是<你em>已经合并。现在你想要合并别的东西,但是你不能,因为你仍然处于早期失败的合并的中间。

如果您运行git fetch origin,您会看到它有效。那么你就可以运行git merge origin/whatever并看到它失败了,并且知道你必须完成这个合并,或者中止它,或者rebase,或者此时你想做的任何事情,在您git merge 另一个分支之前。

git pull命令是一种方便,是执行两个Git命令的捷径,因为git fetch几乎总是会跟随git mergegit rebase。所以当Git第一次构建时,他们只使用 用户前端git pull,它使用了隐藏的后端git fetch。但事实证明,将两个步骤分开是非常有用的,这样你就可以(例如)看到你有fetch编辑的内容。他们使git fetch只能被人类使用(好吧,和任何其他Git命令一样多:-)),以及git pull如何方便。它是什么,除非现在不是这样。