18

Gitではこれを行うことができます:

$ git checkout -b testbranch --track master
Branch testbranch set up to track local branch master.
Switched to a new branch 'testbranch'

そのようなブランチのユースケースは何ですか?

4

2 に答える 2

6

別のローカル ブランチを追跡するようにローカル ブランチを設定することは一般的には役に立ちませんが、便利な場合がいくつか考えられます。

  • 上流のブランチで処理を行うエイリアスまたはスクリプトがいくつかある場合があります (たとえば、@{u}短縮形を使用します。「 」を参照してくださいgit help revisions)。その場合、別のローカル ブランチを追跡するようにローカル ブランチを構成すると、リモート リポジトリに影響を与えたり、一時的なダミー リポジトリを作成したりせずに、エイリアスまたはスクリプトをテストできます。

  • fooローカルmasterブランチ (これは を追跡します) から名前が付けられた新しいローカル ブランチで作業しているが、まだorigin/master公開fooする準備ができていないとしoriginます。または、プッシュしたくない場合もあります。おそらく、コミットにより、デバッグを支援するために散らばったorigin一連の不快な呼び出しが追加されました。printf()とにかく、masterが更新されるたびに、 にリベースfoomasterます。通常は とgit rebase master入力するだけですが、私のようであればgit rebase、習慣から頻繁に入力していることに気付くかもしれません。その場合、次のエラー メッセージが表示されます。

    $ git rebase
    There is no tracking information for the current branch.
    Please specify which branch you want to rebase against.
    See git-rebase(1) for details
    
        git rebase <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
        git branch --set-upstream-to=origin/<branch> foo
    

    あなたはこれをしたくなるかもしれません:

    git branch --set-upstream-to=origin/master foo
    

    git pushしかし、数回のコミットごとに入力する習慣がある場合、それは壊滅的な影響を与える可能性があります(私のように設定していると仮定すると、ローカルfooブランチで進行中のコミットをoriginのブランチにプッシュすることになります) .masterpush.defaultupstream

    foo代わりに、ローカルブランチを追跡するようにローカル ブランチを構成できますmaster。これで、タイピングの習慣がgit rebase思いどおりになり、ぼんやりしているとローカルブランチgit pushが台無しになるだけで、 のブランチは台無しになります。masteroriginmaster

    しかし、ローカル ブランチを別のローカル ブランチを追跡するように構成することは、通常は価値がありませんgit rebasegit rebase masterの代わりに入力することを覚えている方が生きやすいと思いますgit rebase。忘れるとエラー メッセージが表示され、記憶がよみがえり、もう一度やり直します。大きな問題ではない。

于 2012-12-31T19:36:11.347 に答える
0

このコマンドを試してみると、master が「実際の」リモート ブランチとして機能することがわかりました。

.git/config に、以下が追加されました。

[branch "testbranch"]
    remote = .
    merge = refs/heads/master

そして、を使用してマスターからプルし$git pull、を使用してマスターにプッシュできます

$git push . testbranch:master

または$git push、次の構成を .gitconfig に追加した後、単に入力することもできます

[push]
    default = upstream
于 2012-12-27T09:13:17.110 に答える