Git 当我在主分支上时,从另一个分支拉动时会发生什么

Git 当我在主分支上时,从另一个分支拉动时会发生什么,git,Git,1) 在localrepo中,我通过运行git checkout-b postacl创建并切换到分支机构postacl 2) 然后我运行了git push-u-origin postacl 3) 当我还在那里的master分支上时,从远程repo,我意外地运行了git-pull-origin-postacl。然后我意识到我没有切换到postacl 由于上述操作发生了什么?在一般情况下,您很可能只是在本地主分支上添加了一个合并提交。您可以通过从master分支运行git log来验证这一点。

1) 在localrepo中,我通过运行
git checkout-b postacl
创建并切换到分支机构
postacl


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


3) 当我还在那里的
master
分支上时,从远程repo,我意外地运行了
git-pull-origin-postacl
。然后我意识到我没有切换到
postacl



由于上述操作发生了什么?

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

在这种特殊情况下,您只需执行硬重置以删除合并提交即可:

git reset --hard HEAD~1
这将取消意外的合并提交,使本地
主机保持原样。您还可以尝试将本地
主机
重置为跟踪分支:

git reset --hard origin/master

git pull
表示:

  • 运行
    git fetch
    ,将(大部分)任何附加参数传递到
    git fetch
  • 运行
    git merge
    (默认情况下您可以更改此设置),合并通过步骤1引入的提交
  • 这意味着:

    git fetch origin postacl
    
    它让您的Git调用您调用的Git
    origin
    ,并从他们那里获取他们在其
    postacl
    分支上的最新提交。然后,您的Git运行:

    git merge --edit -m <message> <commit-hash-ID>
    
    除了本例中的默认合并消息略有不同之外


    请注意,如果您在登录到其他机器(“远程repo”)时执行了所有这些操作,“您的”Git就是该远程机器上的Git,“他们的”Git就是远程机器的Git设置为其
    原点的Git

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

    第二,你没有改变就推了,使用<代码> -U/COD>改变了分支来跟踪变化,所以每当你要使用更少的参数<代码> Git拉< /代码>时,它会考虑<代码> PASCL 的头引用,用作“代码> FETCHYHORD < < /P>”。 在第三步,它将向您展示如下内容:

    From <url>:<org>/<branch>
     * branch              <tracking_upstream_branch>     -> FETCH_HEAD
    Already up to date.
    
    来自:/
    *分支->取头
    已经更新了。
    
    假设您从master创建了一个新分支并将其推送到远程repo,如果您没有提交并将任何更改推送到
    postacl
    ,则从这个新创建的repo将更改拉到master不会影响任何事情。
    可能重复,因此这意味着
    。。。除非原始问题已配置为使用rebase,否则在这种情况下,步骤将不同。此外,如果分支没有任何超出
    master
    已有提交范围的提交,则可能根本没有合并提交。@TimBiegeleisen:Right:
    git merge
    可能什么也不做,或者可能产生快进;或者可以将
    git pull
    配置为运行
    git-rebase
    作为其步骤2。如果OP包含了git pull的输出,我们可以说得更多。
    git fetch origin && git merge origin/postacl
    
    From <url>:<org>/<branch>
     * branch              <tracking_upstream_branch>     -> FETCH_HEAD
    Already up to date.