没有结帐的Git拉?

Dia*_*ers 94 git

我习惯在我正在处理的分支中运行git pull和其他命令.但我已经设置了一个可供多人工作的开发服务器,所以我不想在我这样做时切换分支.如果我想从我们都使用的github存储库更新开发服务器上的现有分支,那么这样做的正确方法是什么?如果我运行命令'git pull github branchname',那么只需将分支拉入当前分支?

我能找到的所有git示例似乎都表明你首先运行'checkout branchname',然后执行pull.我试图避免这种情况.正如我所说,这是一个现有的分支,我只想更新到最新版本.

小智 169

我正在寻找相同的东西,最后在另一个stackoverflow帖子中找到了对我有用的答案:合并,更新和拉Git分支而不使用checkout

基本上:

git fetch <remote> <srcBranch>:<destBranch>

  • 考虑到问题是关于 pull 的,似乎答案应该是 `git pull &lt;remote&gt; &lt;srcBranch&gt;:&lt;destBranch&gt;`。 (8认同)
  • 如果提交已经在您的本地存储库中:`git fetch 。起源/主人:主人` (4认同)
  • 有没有办法使用上游分支而不是指定源分支? (2认同)
  • 如果您想要的只是将 (origin|online) 分支合并到本地分支,那么您可以使用 git merge origin/master (2认同)

Mar*_*ski 32

我有相同的问题,必须提交或存储当前功能更改,签出master分支,执行pull命令确实可以将所有内容从远程master工作区转移到本地工作区,然后再次切换到Feature分支并执行rebase以使其与最新的主。

为此,请将工作区保持在功能分支上,并避免所有切换,我这样做:

git fetch origin master:master

git rebase master

它很好地解决了问题。

  • 要将原始 master 合并到本地分支,您不需要拉取本地 master。您可以使用`git merge origin/master` (14认同)
  • 这是一个很好的建议,但掩盖了传统:按照以下答案,如果您使用的是“功能”,而您要做的就是将本地“主”更新为与原点一致,而无需触摸“功能”,只需执行`git fetch origin master:master` ......就好像您进行了stash-checkoutMaster-pull-checkoutFeature-stashPop! (6认同)
  • 拉取只是一次提取,然后是合并/变基,因此您应该能够在一行中执行相同的操作:`git pull origin main:main --rebase` (2认同)

Piy*_*ush 5

我使用以下命令将原始分支更新到本地分支而无需签出。git fetch origin [分支名称]:[分支名称]


SzG*_*SzG -15

使用

git fetch
Run Code Online (Sandbox Code Playgroud)

反而。它更新存储库中的远程引用和对象,但保留本地分支、HEAD 和工作树。

  • 但这不会更新他的开发服务器的本地分支...它只会刷新该 git 文件夹上的“origin”分支,该分支对应于提问者的 github 存储库。 (19认同)