使用来自跟踪的远程分支的更改更新本地分支


95

我有一个名为' my_local_branch' 的本地分支,该分支跟踪一个远程分支origin/my_remote_branch

现在,远程分支已更新,我在“ my_local_branch”上并希望提取这些更改。我应该做:

git pull origin my_remote_branch:my_local_branch

这是正确的方法吗?

Answers:


72

您已经设置了该分支的上游

(看到:

git branch -f --track my_local_branch起源/ my_remote_branch
#OR(如果my_local_branch当前已签出):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

git branch -f --track如果分支已签出,将无法使用:git branch --set-upstream-to 改为使用第二个命令,否则您将获得“ fatal: Cannot force update the current branch.”)

这意味着您的分支已经配置了:

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git已经拥有所有必要的信息。
在这种情况下:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

足够。


如果在推' my_local_branch' 时没有建立上游分支关系,那么简单的git push -u origin my_local_branch:my_remote_branch推入设置上游分支就足够了。
在那之后,对于随后的拉动/推动,git pull还是git push再次就足够了。


OP提到他们已经在跟踪远程分支。
2012年

7
@琥珀因此我的回答:git pull足够了。
VonC

第一条命令git branch -f --track master origin/master返回错误:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer是的,我已经编辑了答案,以使其更清晰,如果当前已检出本地分支,则将使用第二个命令。
VonC

您还应该将其更改为--set-upstream-to--set-upstream已弃用并将其删除。
Mark Kramer

86

您不使用:语法- pull总是修改当前已签出的分支。从而:

git pull origin my_remote_branch

当您my_local_branch结帐时会做您想要的。

由于您已经设置了跟踪分支,因此您甚至无需指定-您可以...

git pull

而你已经my_local_branch签出,它会从被跟踪的分支更新。


这应该是正确的答案。就这么简单。
m4l490n
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.