【问题标题】:What happens when I pull from a different branch while I am on the master branch当我在主分支上时从不同的分支拉出会发生什么
【发布时间】:2019-01-01 19:43:13
【问题描述】:

1) 在 local 存储库中,我通过运行 git checkout -b postacl 创建并切换到分支 postacl


2) 然后我跑了git push -u origin postacl


3) 从 remote 存储库中,当我还在 master 分支上时,我不小心运行了 git pull origin postacl。然后我意识到我没有切换到postacl。


由于上述行为发生了什么?

【问题讨论】:

标签: git


【解决方案1】:

git pull 表示:

  1. 运行git fetch,将(大部分)任何附加参数传递给git fetch
  2. 运行git merge(默认 - 您可以更改此设置),合并通过第 1 步引入的提交

所以这意味着:

git fetch origin postacl

这让你的 Git 调用了你称为​​ origin 的 Git,并从他们那里获取他们在 postacl 分支上的最新提交。然后,你的 Git 运行了:

git merge --edit -m <message> <commit-hash-ID>

&lt;message&gt; 部分是字符串:

Merge branch 'postacl' of <url> [into <branch>]

(使用 &lt;url&gt; 与您的姓名 origin 一起存储),而 &lt;commit-hash-ID&gt; 是提交哈希 ID 他们的 Git 告诉 您的 Git 他们的 @ 987654334@ 分支名称。 (into &lt;branch&gt; 部分出现当且仅当您在 master 以外的某个分支上。)

这和你跑的差不多:

git fetch origin && git merge origin/postacl

除了这种情况下的默认合并消息会略有不同。

请注意,如果您在登录到其他机器(如您所说的“远程仓库”)时执行所有这些操作,“您的”Git 就是那个在该远程机器上的一个,并且“他们的”Git 是远程机器的 Git 设置为 its origin 的 Git。

【讨论】:

  • So this meant ... 除非原始问题已将 pull 配置为使用 rebase,在这种情况下,步骤会有所不同。此外,如果分支没有任何提交超出master 已经拥有的内容,则可能根本没有合并提交。
  • @TimBiegeleisen:对:git merge 可能什么都不做,或者可能会产生快进;或git pull 可能配置为运行git rebase 作为其步骤2。如果OP 包含来自git pull 的输出,我们可以说更多。
【解决方案2】:

在一般情况下,您很可能只是在本地 master 分支之上添加了一个合并提交。您可以通过从您的 master 分支运行 git log 来验证这一点。您可能会看到一个新的合并提交,其中有一条提交消息提到了有关合并的内容。如果您没有看到任何合并提交,那么您无需执行任何操作。如果您确实看到了,请继续阅读。

在这种特殊情况下,您应该安全地进行硬重置以删除合并提交:

git reset --hard HEAD~1

这应该会消除意外的合并提交,让您的本地 master 保持原样。您也可以尝试将本地 master 重置为跟踪分支:

git reset --hard origin/master

【讨论】:

    【解决方案3】:

    首先,您只是从 master 创建了一个新分支(假设)。

    其次,您已经推送而不进行更改,并且使用 -u 更改了分支以跟踪更改,因此无论何时您要使用参数 less git pull ,它都会考虑使用 postacl 的头引用作为FETCH_HEAD。

    在第三步,它会显示如下内容:

    From <url>:<org>/<branch>
     * branch              <tracking_upstream_branch>     -> FETCH_HEAD
    Already up to date.
    

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2013-10-23
      • 2016-12-17
      相关资源
      最近更新 更多