[英]Git Pull Origin Master into Local Master and Leave Current Branch Untouched
[英]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 status
将ahead by 14 commits
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.