15

私が働いている場所では、半集中型の git リポジトリを使用しています。各開発者は、中央の git リポジトリに独自のサブツリーを持っているため、次のようになります。

主人
アリス/ブランチ1
アリス/ブランチ2
ボブ/ブランチ1
マイケル/フィーチャー
リリース/1.0
リリース/1.1

私が持っているツリーでローカルに作業しています。これは中央のツリーにtopic/feature対応しています。michael/feature

使ってきました

git push origin topic/feature:michael/feature

私の変更をリモートツリーにプッシュします。ただし、これは面倒で間違いが発生しやすくなります (たとえば、開発者名の省略、機能名のスペルミスなど)。

これを行うためのよりクリーンな方法を探しています。たとえば、「git push」。変更された fetch refspec を使用して別のリモートを設定すると、それが実行されると思われますが、正確に実行する方法がわかりません。また、現在のブランチ定義を変更して別のリモートを使用する方法もわかりません。

私の現在.git/configは次のようになります。

【リモート「オリジン」】
    URL = git://中央/git/プロジェクト
    フェッチ = +refs/heads/*:refs/remotes/origin/*
【枝「話題・特集」】
    リモート = 原点
    マージ = refs/heads/michael/project

編集:これをプル/フェッチにも適用したいと思います。しかし、branch.<name>.mergeそれを世話しますか?

私はこれを調査し続け、何かを見つけたらここに投稿しますが、他の良いアイデアを得ることを望んでいます.

編集 2:ローカル ブランチ名とリモート ブランチ名を同じにすることにしました。これは、作業が最も少なく、将来の問題が発生しにくいようです。

4

4 に答える 4

3

[remote "origin"] セクションで、マッピングごとに 1 行追加します。マスターtoマスター含む。

push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature

git-config コマンドでそれを行う方法がわかりません。

これからは、直接 git push (パラメーターなし) を実行すると、すべてのブランチが同時にプッシュされることに注意してください。

ローカルとリモートで同じブランチ名を保持しない理由を説明していただけますか?

于 2008-10-03T22:19:13.180 に答える
3

可能であれば、ローカルとリモートで同じブランチ名を使用することをお勧めします。次にgit push、すべてのローカル ブランチを中央リポジトリの対応するブランチにプッシュします。

ローカル リポジトリとリモート リポジトリで異なるプレフィックスを使用するには、新しい機能ブランチを作成するたびに、構成ファイルにマッピングを追加する必要があります。topic/BRANCH_NAME のマッピングを設定するコマンドは次のとおりです。

 git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
于 2008-10-04T05:09:17.050 に答える
1

次のような方法で、ブランチをリモートの別の追跡ブランチにマップできます。

git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master

あなたの設定は@Paulが提案するものと似ています(実際には少し「単純」です)。

https://gist.github.com/2002048でうまく機能する使用手順については、この要点 (私が調整したもの) を参照してください。

于 2012-03-13T23:44:46.823 に答える