繁体   English   中英

git pull origin分支想要在干净的当前master分支上合并

[英]git pull origin branch wants a merge on clean current master branch

我在我的master分支上,这是一个完美的清理对象(但是git表示它比14位提交者领先于origin / master)。 当我尝试从原点(Eagle)拉出另一个分支时,git希望我合并一些文件。

这不是我所期望的:拉动分支时,它应该导入远程分支,并保持当前HEAD不变,并且不会因合并冲突而困扰我。 以我的见识,这两个分支彼此分开但彼此和平相处,没有任何冲突。 但是这种看法不再成立。

是什么导致这些冲突,以及如何在不合并的情况下还原2个不同的分支?

在命令行上git会话的记录下方。

HEAD is now at 34e47ab ISS-652 misspelled MockBean in test/ApplicationContext
build@jenkins/p-project/workspace> git status
# On branch master
# Your branch is ahead of 'origin/master' by 14 commits.
#
nothing to commit (working directory clean)
build@jenkins/p-project/workspace> git log -5
.. Same as origin
build@jenkins/p-project/workspace> git push origin master
Everything up-to-date
build@jenkins/p-project/workspace> git status
# On branch master
# Your branch is ahead of 'origin/master' by 14 commits.
#
nothing to commit (working directory clean)
build@jenkins/p-project/workspace> git pull origin Eagle
From ssh://git@stash.europe.intranet:7999/hig/p-project-container
 * branch            Eagle     -> FETCH_HEAD
Auto-merged pom.xml
CONFLICT (content): Merge conflict in pom.xml
Auto-merged p-project-client/pom.xml
CONFLICT (content): Merge conflict in p-project-client/pom.xml
Auto-merged p-project-container-conf/pom.xml
CONFLICT (content): Merge conflict in p-project-container-conf/pom.xml
Auto-merged p-project-container-conf/src/main/resources/dpl/P-Project_Container.xml
CONFLICT (content): Merge conflict in p-project-container-conf/src/main/resources/dpl/P-Project_Container.xml
Auto-merged p-project-container-conf/src/main/resources/was/P-Project_Container-app-env.cfg
Auto-merged p-project-container-ear/pom.xml
CONFLICT (content): Merge conflict in p-project-container-ear/pom.xml
Auto-merged p-project-container-filters/pom.xml
CONFLICT (content): Merge conflict in p-project-container-filters/pom.xml
Auto-merged p-project-container-ldap/pom.xml
CONFLICT (content): Merge conflict in p-project-container-ldap/pom.xml
Auto-merged p-project-container-tomcattest/pom.xml
CONFLICT (content): Merge conflict in p-project-container-tomcattest/pom.xml
Auto-merged p-project-container-web/pom.xml
CONFLICT (content): Merge conflict in p-project-container-web/pom.xml
Automatic merge failed; fix conflicts and then commit the result.
build@jenkins/p-project/workspace>

我将对您的所作所为提供一个解释,在此之后,很明显您可以预期得到的结果。

自上次与远程存储库同步以来,您对master分支进行了14次提交:

git commit -m 'You did something'   # you did this 14 times

接下来,将工作推送到远程:

git push origin master

请注意, git status仍然显示您的本地分支,因为14领先于master 您的本地分支位于旧的本地跟踪分支之前,但与远程master完全同步。

接下来,您执行以下操作:

git pull origin Eagle

这是以下各项的简写:

git fetch origin
git merge origin/Eagle

换句话说,您首先将最新的更改从远程获取到所有跟踪分支中(好的),然后将Eagle分支合并到本地master (坏了)。 发生这种情况的原因是因为您在执行此git pull之前从未切换过分支。

您需要做些什么来解决此问题:

您需要采取2个步骤。 首先,您需要撤消不正确的合并到master分支中的操作。 其次,您应该将分支切换到Eagle ,然后执行git pull

# on the master branch
git log
# find the SHA-1 hash immediately BEFORE the bad merge, then do
git reset --hard SHA-1
# next switch to the Eagle branch
git checkout Eagle
# finally do the correct pull
git pull origin Eagle

您可能仍然存在合并冲突,但这将是真正的冲突,而不是将Eagle合并为master的结果。

git pull origin branch作用是获取并合并远程分支到当前的本地分支。 因此,以上命令的结果是-将远程分支eagle合并到本地主机中。

我想您想要创建一个新的本地独立分支来跟踪相应的远程分支。 你可以这样做

git fetch
git checkout -b eagle --track origin/eagle

这将创建一个新的单独的本地分支eagle ,该分支eagle将反映远程分支eagle

此本地分支将独立于您的本地主分支,并保持您的本地主不变。

您可以执行git status ,它会显示Your branch is up-to-date with 'origin/eagle'. 您可以使用git checkout master ,然后执行git statusahead by 14 commits

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM