不用 git pull 更新本地分支

问题描述 投票:0回答:5

假设我刚刚从远程存储库中提取或获取。

现在我想切换到不同的本地分支。

我可以用

git checkout <branch_name>
git switch <branch_name>
来做,但是如果它落后于
origin
.

,这不会更新分支

Git 会告诉你在切换分支后使用

git pull
,但这似乎是到服务器 - 这是多余的,因为我已经做了一个
git fetch
刚刚从服务器获取所有更改。

所以我的问题是 - 有没有办法更新本地分支,以便在

git checkout
/
git switch
之后与远程同步,而不使用
git pull

FWIW,在 Mercurial 中更合乎逻辑,

hg pull
获取所有远程更改,
hg update
从远程更新本地,无需再次访问服务器。

git
5个回答
2
投票

假设您想更新本地分支而不做明确的

git pull
,您可以尝试以下操作:

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

上面首先做一个

git fetch
更新你的本地跟踪分支
origin/feature
。然后它会与您本地
feature
分支的跟踪分支合并。这基本上是
git pull
的第二步,这是一个获取,然后是与跟踪分支的合并。


1
投票

假设我刚刚从远程存储库中拉取或获取。 现在我想切换到不同的本地分支。

假设你打算切换到的分支是

mybranch
.

然后如果你通过说来获取

git fetch origin mybranch:mybranch

那就没有第二步了;当您切换到

mybranch
时,它将already与服务器保持同步。


1
投票

Git 等价于

hg pull
git fetch
.

git pull
是一个方便的命令,用于“
git fetch
后跟我设置的任何内容,这是我当前结帐后通常要做的事情”。要在不重新获取的情况下对其他分支执行您想做的事情,只需在不重新获取的情况下对其他分支执行您想做的事情:

 git pull
 git checkout otherbranch
 git merge

将在获取后执行您通常对当前结帐所做的任何操作,然后切换到

otherbranch
并直接进行合并。


1
投票

git pull 相当于:

  • git fetch
  • git merge @{u}

只需换到分支并使用

git merge @{u}
git merge remote\remote-branch-name
@{u}
只是上游分支的简写)

我个人更喜欢只删除我不使用的本地分支。然后它每次都会在正确的位置创建分支:-)

edit:我猜你可以使用

@{u}
语法来创建一个
git update
命令,如果你想要的话:P(见 git aliases


0
投票

Git 会告诉你在切换分支后使用 git pull,但这似乎是到服务器 - 这是多余的,因为我刚才已经执行了 git fetch 以从服务器获取所有更改。

如果您已经从遥控器下载并且遥控器被命名为

origin
然后在git checkout mybranch之后执行任何
one

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

您可能还想跟踪这个分支:

git branch --set-upstream-to=origin
© www.soinside.com 2019 - 2024. All rights reserved.