代码之家  ›  专栏  ›  技术社区  ›  Milan BabuÅ¡kov

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

  •  21
  • Milan BabuÅ¡kov  · 技术社区  · 14 年前

    我发现Git文档在这个问题上非常神秘。我想做一件简单的事,但做起来似乎一点也不简单。

    我有以下情况:

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

    我可以用 吉特拉力 从原点提取和合并,这很好:

    $ 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 回复  |  直到 10 年前
        1
  •  26
  •   Roberto Bonvallet Sebastian Celestino    12 年前

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

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

    我应该编辑哪个文件,输入什么?

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

    这个案例中的昵称是什么?

    在本例中,昵称是遥控器的名称,所以称为“棒”。你不用担心 remote.* 选项,因为已经设置了这些选项,但您确实需要设置 branch.* 选项。这些选项告诉Git在执行 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信息,它将从stick获取所有分支,并合并到stick的主分支中。请注意,原点将 不再是默认的远程;要在源站的主分支中合并,必须使用 git pull origin master .

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