【问题标题】:What might cause `git pull` to fail seeing remote changes?什么可能导致 `git pull` 无法看到远程更改?
【发布时间】:2016-06-06 19:58:14
【问题描述】:

在什么情况下git pull origin master 命令会导致与git checkout master 不同的工作副本状态 -> git pull -> git checkout feat-a -> git merge master

说来话长。

我有一个功能分支,我们称之为feat-a。我是唯一在这个分支上工作的开发人员。该分支是从master 分支创建的。两个分支都有远程来源,origin/feat-aorigin/master。没什么特别的,典型的 git 存储库安排。

今天我想从远程master 更新我的功能分支。从之前与其他开发人员的交流中,我知道当我将远程 master 合并到我的功能分支时会有冲突的更改。

我正在使用 SourceTree。因此,在签出 feat-a 分支后,我打开了 origin/master 分支的上下文菜单并选择了 Pull origin/master into current branch。看到 Git 报告我的分支已经是最新的,我感到很震惊。我知道这不对,远程master分支肯定有变化。我重复了几次命令。始终收到相同的最新消息。

100% 肯定,我是“长期”做到的。我检查了master 分支,点击了Pull 按钮。该分支已使用最新提交进行了更新。然后我检查了feat-a 分支,然后在主分支上拉上下文菜单并选择Merge master into current branch。瞧!这是我期望得到的合并冲突!

这让我很困惑。我曾假设从origin/master 执行pull 到我当前的分支与签出master、拉出、签出另一个分支然后将master 合并到当前分支中相同(除了从远程拉出master 进入另一个分支不会更新我的本地 master,但这不应该影响这个问题)。

本质上,出于某种原因,从origin/masterfeat-apull 命令试图让我相信origin/master 没有任何变化,只有切换分支和手动合并的漫长道路才能按预期工作。

我不确定 SourceTree 是否正在做一些可能会影响此问题的特殊操作。

【问题讨论】:

  • 我昨天在将代码从 Github master branch 拉到我的 heroku branch 在本地机器上时也遇到了这个问题,但它说你的分支是最新的,然后按照你所拥有的步骤进行操作上文提到的。我认为这一定是一个错误。
  • 验证您的跟踪是否符合您的想法。 git branch -avv 将向您显示每个本地分支跟踪的远程分支。您可能会发现 master 正在以某种方式跟踪 origin/master 以外的其他内容。

标签: git merge atlassian-sourcetree pull


【解决方案1】:

你说你使用 Sourcetree,所以我猜你实际上并没有在命令行上输入 git pull origin master。我的猜测是它要么是 GUI 消息中令人困惑的东西,要么是 Sourcetree 中的错误。

我宁愿向 Sourcetree 开发人员询问。

【讨论】:

  • 是的,可能是这样。我在更新 SourceTree 后今天遇到了这个问题。我之前没有遇到过这样的问题,所以这可能确实是 SourceTree 中的一些新错误。我今天会尝试重现它。
  • 你是对的。我 - 和我的一些同事 - 成为了这个错误的受害者:jira.atlassian.com/browse/SRCTREEWIN-4329 我想这就是过度信任 GUI 工具的代价。
猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 2017-12-31
  • 2014-02-07
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 2012-01-24
相关资源
最近更新 更多