不使用git pull更新本地分支

syqv5f0l  于 2023-04-04  发布在  Git
关注(0)|答案(5)|浏览(141)

假设我只是从远程存储库中提取或获取。
现在我想切换到另一个本地分支。
我可以用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从远程更新本地,而无需再次访问服务器。

2g32fytz

2g32fytz1#

假设你想更新一个本地分支而不执行显式的git pull,你可以尝试以下操作:

# from master
git fetch origin
git checkout feature
git merge origin/feature

上面的代码首先执行了一个git fetch,它更新了你的本地跟踪分支origin/feature。然后它从你的本地feature分支中合并了这个跟踪分支。这基本上是git pull的第二步,这是一个fetch,然后是一个与跟踪分支的合并。

vshtjzan

vshtjzan2#

假设我刚刚从远程仓库中拉取了数据,现在我想切换到另一个本地分支。
假设您要切换到的分支是mybranch
那么如果你说

git fetch origin mybranch:mybranch

则没有步骤二;当你切换到mybranch时,它将 * 已经 * 与服务器保持同步。

omtl5h9j

omtl5h9j3#

Git的hg pull的等价物是git fetch
git pull是一个方便的命令,用于“git fetch后跟我在当前 checkout 后设置的通常操作”。要在不重新读取的情况下对其他分支执行您想要的操作,只需在不重新读取的情况下对其他分支执行您想要的操作:

git pull
 git checkout otherbranch
 git merge

将在获取后对当前 checkout 执行您通常执行的操作,然后切换到otherbranch并直接执行合并。

gfttwv5a

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

u5i3ibmn

u5i3ibmn5#

Git会告诉你在切换分支后使用git pull,但这似乎会转到服务器-这是多余的,因为我刚才已经做了一个git fetch来从服务器获取所有更改。
如果您已经从远程下载了,并且远程名为origin,则在git checkout mybranch之后执行以下任何一项:

git merge origin/mybranch
git merge --ff-only origin/mybranch
git rebase origin/mybranch

您可能还想跟踪此分支:

git branch --set-upstream-to=origin

相关问题