假设我只是从远程存储库中提取或获取。
现在我想切换到另一个本地分支。
我可以用git checkout <branch_name>
或git switch <branch_name>
来做,但如果它在origin
后面,这不会更新分支。
Git会告诉你在切换分支后使用git pull
,但是这似乎会转到服务器--这是多余的,因为我刚才已经做了一个git fetch
来从服务器获取所有更改。
所以我的问题是--有没有一种方法可以更新本地分支,使其在git checkout
/git switch
之后与远程分支保持最新,而不使用git pull
?
顺便说一句,在Mercurial中,hg pull
获取所有远程更改,hg update
从远程更新本地,而无需再次访问服务器。
5条答案
按热度按时间2g32fytz1#
假设你想更新一个本地分支而不执行显式的
git pull
,你可以尝试以下操作:上面的代码首先执行了一个
git fetch
,它更新了你的本地跟踪分支origin/feature
。然后它从你的本地feature
分支中合并了这个跟踪分支。这基本上是git pull
的第二步,这是一个fetch,然后是一个与跟踪分支的合并。vshtjzan2#
假设我刚刚从远程仓库中拉取了数据,现在我想切换到另一个本地分支。
假设您要切换到的分支是
mybranch
。那么如果你说
则没有步骤二;当你切换到
mybranch
时,它将 * 已经 * 与服务器保持同步。omtl5h9j3#
Git的
hg pull
的等价物是git fetch
。git pull
是一个方便的命令,用于“git fetch
后跟我在当前 checkout 后设置的通常操作”。要在不重新读取的情况下对其他分支执行您想要的操作,只需在不重新读取的情况下对其他分支执行您想要的操作:将在获取后对当前 checkout 执行您通常执行的操作,然后切换到
otherbranch
并直接执行合并。gfttwv5a4#
git pull相当于:
git fetch
git merge @{u}
只需更改到分支并使用
git merge @{u}
或git merge remote\remote-branch-name
(@{u}
只是分支上游的简写)就我个人而言,我更喜欢删除我不使用的本地分支。然后它每次都会在正确的位置创建分支:-)
edit:我想如果你需要的话,你可以使用
@{u}
语法来创建一个git update
命令:P(参见git aliases)u5i3ibmn5#
Git会告诉你在切换分支后使用git pull,但这似乎会转到服务器-这是多余的,因为我刚才已经做了一个git fetch来从服务器获取所有更改。
如果您已经从远程下载了,并且远程名为
origin
,则在git checkout mybranch
之后执行以下任何一项:您可能还想跟踪此分支: