首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并/拉时的Git错误

合并/拉时的Git错误
EN

Stack Overflow用户
提问于 2017-02-10 21:50:57
回答 1查看 371关注 0票数 0

在试图合并或拉出分支时,我收到了一个错误。

错误(来自拉请求的示例)如下所示:

代码语言:javascript
复制
MacBook-Pro-2:boilerplate Gene$ git pull origin test_branch
From https://github.com/me/boilerplate
* branch            test_branch     -> FETCH_HEAD

Merge branch 'test_branch' of https://github.com/me/boilerplate into test_branch

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts 
# the commit.
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
"~/Sites/boilerplate/.git/MERGE_MSG" 7L, 302C

问题是我绝对是输入了一条提交消息。

git commit -am "saving my work"

而且这个错误没有给我任何选择来解决它,甚至ctrl+c退出。我基本上得关闭终端窗口然后重新打开。

问题是,一旦我重新打开终端,合并或拉请求似乎总是成功的,但没有提交。我只要提出我的改变就行了。这主要是恼人的(更重要的合并有点神经质)。

有人知道这可能是什么以及如何预防吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 23:24:38

这不是错误消息。git pull需要做一个合并,它要求你解释为什么.这对用户来说有点不诚实,但那是你的Git。

git pull origin test_branch实际上是git fetch origin + git merge origin/test_branch。Git不与远程存储库对话,除非您告诉它,所以它必须获得远程更改的新快照。它执行fetch来获取远程存储库状态的更新。它将此存储在远程跟踪分支中,如origin/test_branchtest_branch分支位于origin存储库中。

在取货之前,你的回购可能会像这样。

代码语言:javascript
复制
A - B - C - D [origin/test_branch]
             \
              E - F [test_branch]

这意味着上一次从origin获取数据时,它的test_branch位于D,然后执行了一些本地提交。

取完东西后,可能会像这样。

代码语言:javascript
复制
A - B - C - D - G - H [origin/test_branch]
             \
              E - F [test_branch]

其他人推送了一些更改,因此您的test_branchorigintest_branch分支不同。这必须合并,所以git pullgit merge origin/test_branch。这会导致合并提交,就像任何合并一样,它要求您解释为什么会发生合并。

代码语言:javascript
复制
A - B - C - D - G - H [origin/test_branch]
             \       \
              E - F - I [test_branch]

你可以告诉它“与遥控器同步”之类的东西。

这样做够了,你就会得到很多合并,这只是簿记而已。

代码语言:javascript
复制
A - B - C - D - G - H - J - K - L - M [origin/test_branch]
             \       \       \       \
              E - F - I - N - O - P - Q [test_branch]

我,O,Q都是没有意义的。每个人都这么做,存储库可能会变得一团糟。我画得很整齐,但吉特并不总是这样做的。

还有更好的办法。git pull --rebase。这不是fetch +合并,而是fetch + rebase。所以在fetch之后你就有了这个。

代码语言:javascript
复制
A - B - C - D - G - H [origin/test_branch]
             \
              E - F [test_branch]

它没有执行git merge origin/test_branch,而是执行git rebase origin/test_branch。它重写E和F,就好像它们一直在H之上一样,给了它们新的提交ID。

代码语言:javascript
复制
A - B - C - D - G - H [origin/test_branch]
             \       \
              E - F   E1 - F1 [test_branch]

E和F最终将被垃圾收集,但他们会在附近逗留一段时间,所以如果有什么可怕的错误,你可以扭转这个过程。

没有记账合并来混淆事情。历史是美好的和线性的。就好像你一直在处理最新的代码一样。

rebase的其他用途不同,这始终是安全的,因为它只影响未与其他任何人共享的提交。您可以安全地设置它,这样git pull将始终在您的~/.gitconfig中重新定位。

代码语言:javascript
复制
[pull]
        rebase = true

现在,git pull origin test_branch将使用rebase而不是merge,您将拥有更干净的历史记录,减少簿记。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42169250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档