【问题标题】:How come "git pull origin master" doesn't actually change the files in my computer's directory?为什么“git pull origin master”实际上并没有更改我计算机目录中的文件?
【发布时间】:2013-02-28 13:24:04
【问题描述】:

我对 GitHub 还是很陌生,尽管我处于必须积极使用它的位置。

无论如何,我使用“git pull upstream master”为我正在处理的项目提取和合并最新代码。我以为这个命令会更新我计算机上的实际文件(出现在目录中的文件等),但实际上什么也没发生。

当然控制台提到了许多变化,但似乎都没有发生。作为一项实验,我什至从其中一个文件中删除了所有内容并重新拉取,看看这是否会改变,但我得到“已经是最新的”。

如果有帮助,我输入git branch -v 并得到以下信息:

* master a2e10a4 [ahead 29] git workflow experiment

另外,git status 给出以下信息:

# On branch master
# Your branch is ahead of 'origin/master' by 29 commits.
#
nothing to commit (working directory clean)

最后一点,我唯一的分支是 master。

发生了什么?如何“拉取”更改以显示在我的目录/计算机上?

【问题讨论】:

    标签: git github merge git-pull


    【解决方案1】:

    我怀疑 master 没有跟踪 upstream/master(如 in here),这意味着,git pull upstream master获取来自 upstream 的提交,但不会合并 任何东西。
    您可以手动合并它们:git merge upstream/master

    另外,upstream 不是originmaster 领先于origin/master:这里没有什么可以拉的,只有 29 个新的提交要推送到原点(这应该是你的分叉,也就是说您从 GitHub 服务器端的上游克隆:请参阅 "What is the difference between origin and upstream on GitHub?")。

    【讨论】:

      【解决方案2】:

      您输入的命令是git pull upstream master。该命令 fetches 然后 merges 从上游更改到您的本地分支。

      git status 消息表明上游中的所有内容都已与本地 master 合并。但是您还没有推送您对遥控器的更改。换句话说,您已将更改提交到本地存储库,但尚未将它们推送到远程。在像 git 这样的分布式 VCS 中,commitpush 不是一回事。

      键入 git push origin master 将您的更改发送到上游远程。这将使一切同步。

      如果这不起作用,您可能需要重新定位本地存储库。要在本地工作下重新定位远程源,请键入 git pull -r origin master。然后输入git push origin master

      如果您不确定是否准备好推送,您可以随时使用git push origin master --dry-run 进行试运行,您的任何更改都不会真正推送。

      【讨论】:

      • 另一个你可能会发现这个由 William Morgan git-wtf 编写的 shell 脚本有用的工具。它提供了您的跟踪分支如何与远程服务器相关的摘要。
      猜你喜欢
      • 2012-01-31
      • 2011-02-22
      • 1970-01-01
      • 2020-07-27
      • 2019-05-28
      • 1970-01-01
      • 2017-04-06
      • 2017-10-20
      相关资源
      最近更新 更多