21

この問題に関して、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.

ここでいくつかのことが私を混乱させます。ここで「構成ファイル」とはどういう意味ですか? どのファイルを編集する必要があり、正確には何を入力すればよいですか? この場合のニックネームは?

私が達成しようとしていることは非常に一般的だと思いますが、例を挙げて簡単な答えを見つけることができませんでした。

4

1 に答える 1

26

ここで「構成ファイル」とはどういう意味ですか?

.git/configレポのルートにあるレポの構成ファイル。(ユーザーごとのグローバル構成ファイルも にあり~/.gitconfigますが、そこにリポジトリ固有の設定を配置する必要はありません。)

どのファイルを編集する必要があり、正確には何を入力すればよいですか?

プログラムを使用して、git config構成情報を手動で入力する代わりに書き込むことができます。ただし、手動で実行する場合は、開くだけ.git/configです。構文はかなり単純です。

この場合のニックネームは?

この場合のニックネームはリモコンの名前です。つまり、「スティック」です。remote.*これらのオプションは既に設定されているため、心配する必要はありませんが、branch.*オプションを設定する必要があります。git pullこれらのオプションは、スティックから実行するときに何をマージするかを Git に指示します。

from stick を実行するときに master from stick にマージしたいとします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

したがって、git pullリモートまたは refspec 情報なしで a を実行すると、スティックからすべてのブランチが取得され、スティックのマスター ブランチにマージされます。origin はデフォルトのリモートではなくなることに注意してください。origin の master ブランチにマージするには、git pull origin master.

デフォルトのリモコンをスティックに変更したくない場合は、引き続き を使用する必要がありますgit pull stick master

于 2010-02-25T16:02:15.703 に答える