Git 当我在主分支上时,从另一个分支拉动时会发生什么
1) 在localrepo中,我通过运行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来验证这一点。
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调用您调用的Gitorigin
,并从他们那里获取他们在其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.