从错误的远程分支拉取git pull

3
我的源代码有一个fixes和一个fixes_v3分支。我的客户端只有fixes分支。我执行git pull git+ssh:/.../mygitrepo,突然在我的客户端上,fixes分支中就有了所有的fixes_v3代码。为什么会这样?现在我尝试使用git pull ... mygitrepo fixes,但它告诉我已经是最新的了。 git remote show origin输出如下:
HEAD branch: fixes
Local refs configured for 'git push':
  fixes  pushes to fixes  (fast-forwardable)
  master pushes to master (up to date)

我不知道你问题的答案,可能是一些错误的设置,但我有一个建议。不要使用 git pull,而是分两步使用 git fetchgit merge,这样你就可以看到你正在合并的内容。参考链接 - Shahbaz
2个回答

1

显然你的分支正在跟踪错误的远程分支。执行 git remote show origin 命令来查看哪个远程分支合并了 fixes 分支。它可能会显示类似以下内容:

fixes merges with remote fixes_v3

在撤销上一次合并后,相应地进行调整。


@djechlin,你的修改显示了 git push 的配置,而不是 git pull - Shahbaz
@djechlin 这是你的问题。你的仓库没有配置pullgit pull repo相当于git fetch && git merge FETCH_HEAD,其中FETCH_HEAD是字母顺序第一个引用。这里的教训可能是,你不应该在没有配置的情况下进行拉取操作。 - pmr
公正的课程。基本上,除非你知道自己在做什么,否则git fetch是更好的功能。谢谢。 - djechlin

0

快速解决方案?

撤销所有本地提交。例如:

选择要撤销的分支

git branch fixes

移除本地提交

git reset --hard origin/fixes

来源

主题分支是如何搞乱的?

在我的案例中,我没有指定目标名称就进行了拉取操作:

git pull origin cifs_support

由于没有本地的cifs_support分支,因此将来自origin/cifs_support的提交添加到master中。

你安全吗?

不。使用接受答案中的建议检查您的配置:使用git remote show origin查看哪些分支受到git pullgit push的影响。如果分支跟踪错误,请尽快修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接