如何立即 checkout 由git pull更新的分支的最新提交?

uidvcgyl  于 2023-04-04  发布在  Git
关注(0)|答案(2)|浏览(163)

我使用所谓的“Git Flow”,这意味着有一个“开发”分支,收集所有团队成员的所有工作结果,而每个开发人员创建一个“功能”分支,并发出一个pull request,以将功能分支放入“开发”,而功能分支被删除。
如果我现在执行'git pull',然后执行'git checkout develop',我会返回到本地开发分支的最后一次提交,这是较旧的,只有另一个'git pull'将我的本地文件更新到远程的' develope '中。我讨厌的是当从我的功能分支返回到' develope '时,这种获取旧文件的行为,只是为了在发出第二个'git pull'后更新到最近的文件(我已经有了一分钟左右)。
所以,问题是,如果我只想立即切换到“develope”,切换到远程的最新提交,有没有办法避免在我的工作目录中来回移动文件?

9bfwbjaz

9bfwbjaz1#

你根本不应该有一个本地的develop分支。删除它。现在就删除它。它只会让你的生活变成一个地狱,正如你的问题所暗示的那样。
您所需要的只是自动生成的远程跟踪分支origin/develop,而且您已经拥有了它,因为它是自动生成的(等待它)。
所以现在

  • 要更新所有远程跟踪分支,包括origin/develop,只需输入git fetch(无论您在哪个分支)。
  • 如果你需要将最新的develop变更合并到你当前的特性分支中,那么在说git fetch之后,说git merge origin/develop。或者,如果你还没有推送你当前的特性分支,并且你想假装它是从develop的最新状态中出现的,那么说git rebase origin/develop(但这更危险)。

(And永远不要再说git pull了。)
关于我如何做git flow的更完整的解释,请参阅我的文章:https://stackoverflow.com/a/72201388/341994

jhdbpxl9

jhdbpxl92#

git pull更新(合并或重定基)当前 checkout 的分支。要更新非当前分支,您需要git fetch。因此,它是

git checkout develop
git pull [origin [develop]]

git fetch origin develop:develop
git checkout develop

你可以创建(git或shell)别名、shell函数或脚本来完成重复的任务。
如果当前分支不是develop,你可以运行git pull origin develop:develop。这将运行git fetch origin develop:develop,然后将develop合并(或变基)到当前分支中。但是之后无论如何都需要git checkout develop

相关问题