23

没有远程存储库,只有一个带有两个分支的本地存储库。

$ git branch -a
  master
* devel

在这种情况下,以下命令是否相同/同义词?

$ git pull . master

$ git merge master

更新:

$ git help pull给出以下信息

SYNOPSIS
   git pull <options> <repository> <refspec>...

DESCRIPTION
   ...
   Note that you can use . (current directory) as the <repository> to pull
   from the local repository — this is useful when merging local branches
   into the current branch.

我实际上不明白为什么这个手册页中提到这很有用。

4

3 回答 3

20

pull是一个组合命令,fetch后跟merge. 使用默认或明智的参数,它将同步您当前的分支。

由于有问题的参数,它的大部分工作都被破坏了。fetch 部分被否决以使用当前 repo,因此被跳过,并且您明确要求 master 否决 FETCH_HEAD。

所以在那种形式下,我相信它们是相同的(我也会把第一个放在废话类别中)。

于 2013-06-27T09:45:12.383 回答
15

git pull . master从当前存储库中获取(无操作),然后将执行一些操作以使当前分支与master. 这可能是合并,但也可能是变基,具体取决于配置设置pull.rebasebranch.master.rebase.

在合并的情况下,合并策略可能会受到pull.twohead.

git merge master将始终使用默认合并策略合并 master。

于 2013-06-27T13:22:09.897 回答
4

唯一的区别 - 在第二种情况下(git merge master),它将与不是数据合并,而是与您上次远程更新的数据合并。因此,如果您刚刚制作fetch(或git remote update)-它们的工作方式相同,但如果您很久以前更新了本地存储库-它将与旧快照合并。

不确定句号git pull . master是正确的语法...

于 2013-06-27T11:29:04.283 回答