如何告诉Git总是拉主分支?

时间:2010-02-25 15:51:30

标签: git git-branch

我发现git docs在这个问题上非常神秘。我想做一件简单的事情,但似乎这样做并不简单。

我有以下情况:

$ git remote -v
origin  git://192.168.0.49/mnt/repos
stick   /mnt/titanium/podaci/repos

我可以使用 git pull 从原点获取和合并,这样可以正常工作:

$ git pull
Already up-to-date.

我可以像这样从坚持

$ git pull stick master
Already up-to-date.

然而,当我从没有部分的拉出来时,我收到此消息:

$ git pull stick
From /mnt/titanium/podaci/repos
 * [new branch]      su2009  -> stick/su2009
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote = <nickname>
    branch.master.merge = <remote-ref>
    remote.<nickname>.url = <url>
    remote.<nickname>.fetch = <refspec>

See git-config(1) for details.

有些事让我困惑。 “您的配置文件”在这里意味着什么?我应该编辑哪个文件,以及我应该输入什么?在这种情况下,昵称是什么?

我希望我想要完成的事情非常普遍,但我无法通过一个例子找到一个直截了当的答案。

1 个答案:

答案 0 :(得分:26)

  

“您的配置文件”在这里是什么意思?

您的repo的配置文件,位于您的repo根目录的.git/config。 (~/.gitconfig还有一个每用户全局配置文件,但你不想在那里放置特定于回购的设置。)

  

我应该编辑哪个文件,以及我应该输入什么内容?

您可以使用git config程序编写配置信息,而不是手动输入。但是,如果您想手动执行此操作,只需打开.git/config - 语法非常简单。

  

在这种情况下有什么昵称?

在这种情况下,昵称是遥控器的名称 - 所以“棒”。您不必担心remote.*选项,因为已经设置了这些选项,但您确实需要设置branch.*选项。这些选项告诉Git在从棍子做git pull时要合并什么。

假设您想从棍子中进行git pull时从棒中合并。你可以这样做:

# Sets stick as default remote for git pull.
# Note that origin will no longer be the default remote for git pull!
$ git config branch.master.remote stick

# Automatically merge in stick's master branch when doing a git pull
$ git config branch.master.merge refs/heads/master

所以现在,当你在没有任何远程或refspec信息的情况下执行git pull时,它将从stick获取所有分支,并在stick的master分支中合并。请注意,原点将成为默认远程;要合并origin的主分支,您必须使用git pull origin master

如果您不想更改默认遥控器,则必须继续使用git pull stick master