【发布时间】:2021-03-25 12:30:40
【问题描述】:
我尝试使用的工作流程:
upstream/main_branch -> myfork/main_branch。
最初通过 git clone 然后使用 git reset --hard upstream/main_branch
myfork/main_branch -> myfork/feature_branch。
最初通过git checkout -b "feature_branch 然后git rebase main_branch
myfork/feature_branch -> upstream/main_branch。
通过 GitHub 拉取请求
我的问题是:我确信这个过程在过去可以正常工作,但是当我现在尝试从 upstream/main_branch 更新我的 myfork/feature_branch 时(为了那时update myfork/feature_branch) 获取更新失败。
git checkout myfork/main_branch
git fetch upstream
退出非常快并且没有我知道的最新提交在上游分支 当我跑步时
git branch -avv
远程分支已列出,但仍显示旧提交。
之前运行git fetch upstream refs/heads/main_branch:refs/remotes/upstream/main_branch 已解决此问题。但我想知道为什么会发生这种情况以及为什么会进入这种状态?
(我主要使用 IntelliJ Idea Git 工具)
提前致谢。
【问题讨论】:
-
您能否提供重现您的设置的确切步骤?目前还不清楚您做了什么以及为什么必须在您的分支上使用
git reset --hard。 -
我这样做只是为了获取上游 main_branch 的本地副本,而无需重新设置...
-
是的,但是:如果你的本地分支和远程是绑定的,我认为你只需要获取/拉取。它仍然取决于细节,因此我要求minimal reproducible example。
-
git pull表示运行git fetch,然后运行第二个 Git 命令。第二个命令默认为git merge,除非你告诉Git让它默认为git rebase,但可以在你运行git pull时指定。我几乎从不使用git pull,因为要知道我想要哪个第二个命令,我必须先获取并查看我得到了什么,然后获取没有意义,所以我应该自己运行第二个命令一旦我弄清楚什么是的。 -
在任何情况下:检查是否有东西将
upstream设置为单分支远程,而不是完整的远程。使用git config --get remote.upstream.fetch。对于成熟的遥控器,输出是+refs/heads/*:refs/remotes/upstream/*,但对于单分支的输出是别的。
标签: git github intellij-idea