拉取并切换到另一个分支的 Git pull 操作

4

我经常需要检出另一个分支的最新版本:

git checkout anotherbranch
git pull

如何在不先检出另一个分支的过时版本的情况下完成此操作?

例如:

已知条件:

  1. 有主分支和 feature1 分支
  2. 每个分支都有一个名为 origin 的远程仓库,且远程分支同名。
  3. 没有未推送的本地提交

操作步骤如下:

  1. 我在 feature1 分支上,有人把 PR 合并到了主分支上

那么,如何检出主分支最新版本呢?

以下步骤是否可行?

git fetch origin master
git checkout master

这个回答解决了你的问题吗?不进行checkout的Git pull? - Adam
@Adam 那个问题的被接受答案只是一个链接,指向 https://dev59.com/u3A75IYBdhLWcg3wlqET,因此那可能更适合作为重复目标。 - IMSoP
2个回答

2

我处理这种情况的一种方法是使用远程跟踪分支origin/master,而不是使用本地的master分支。假设你想将最新的远程master合并到feature1分支中,你可以使用以下命令:

# from feature1
git fetch origin
git merge origin/master

上述的git fetch技巧将会更新所有你远程跟踪的分支,这样本地的origin/master将会反映Git仓库中最新的更改。你可以随意使用origin/master


1
“我怎么能在不先检出另一个分支的过时版本的情况下完成这个任务?”
git fetch origin anotherbranch:anotherbranch
git checkout anotherbranch

如何检出最新的主分支版本?
git fetch origin master:master
git checkout master

2
如果我执行 git fetch origin master 而不是 git fetch origin master:master 会怎样? - Liero
2
在这里解释一下神奇的"x:x"符号是做什么的会很好。我猜这是有意为之的,并且与仅仅使用"git fetch origin anotherbranch"不同? - IMSoP
git fetch <remote> <remoteBranch>:<localBranch> 告诉 Git 拉取远程分支,然后创建或更新本地分支以指向相同的提交。到目前为止都是预期的。但是:这个命令是安全的,因为如果本地分支存在且更新不是快进,则会失败。避免了意外合并和重置。 (摘自此帖子的编辑历史记录) - Torge Rosendahl

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