更新本地分支没有git拉

  • 本文关键字:git 分支 更新 git
  • 更新时间 :
  • 英文 :


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

现在我想切换到另一个本地分支。

我可以对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从远程更新本地,而无需再次访问服务器。

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

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

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

假设我刚刚从远程存储库提取或获取。现在我想切换到另一个本地分支。

假设你想切换到的分支是mybranch

如果你通过

获取
git fetch origin mybranch:mybranch

则没有第二步;当你切换到mybranch时,已经与服务器同步了。

Git的hg pull对应的是git fetch

git pull是"git fetch接下来是我设置的通常的事情,在为我当前的结帐取回后要做的事情。要想在不重新抓取的情况下对其他分支做你想做的事,就对其他分支做你想做的事,而不重新抓取:

git pull
git checkout otherbranch
git merge

将在抓取后执行当前签出操作,然后切换到otherbranch并直接进行合并。

git pull相当于:

  • git fetch
  • git merge @{u}

简单地更改到分支并使用git merge @{u}git merge remoteremote-branch-name(@{u}只是分支上游的简写)

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

编辑:我猜你可以使用@{u}语法创建一个git update命令,如果你想要它:p(见git别名)

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