gitで異なるプレフィックスを持つローカルブランチをリモートブランチにマッピングできますか?
質問
私はここで半集中型gitリポジトリを使用しています。各開発者は、中央のgitリポジトリに独自のサブツリーを持っているため、次のようになります。
master alice/branch1 alice/branch2 bob/branch1 michael/feature release/1.0 release/1.1
ツリーでローカルに作業しているtopic/feature
があり、これは中央ツリーのmichael/feature
に対応しています。
使用しています
git push origin topic/feature:michael/feature
変更をリモートツリーにプッシュします。ただし、これは面倒で間違いを起こしやすい(開発者名の省略、機能名のつづりの間違いなど)。
これを行うためのよりクリーンな方法を探しています。たとえば、<!> quot; git push
<!> quot;。変更されたフェッチrefspecを使用して別のリモートを設定するとそれが行われると思われますが、どのように正確に行うかはわかりません。また、現在のブランチ定義を変更して別のリモートを使用する方法もわかりません。
現在の.git/config
は次のようになります:
[remote "origin"] url = git://central/git/project fetch = +refs/heads/*:refs/remotes/origin/* [branch "topic/feature"] remote = origin merge = refs/heads/michael/project
編集:これをプル/フェッチにも適用したいと思います。しかし、branch.<name>.merge
はそれを処理しますか?
これについては調査を続け、何か見つかったらここに投稿しますが、他にも良いアイデアが欲しいと思っています。
編集2:ローカルとリモートのブランチ名を同じままにすることにしました。作業が最も少なく、今後の問題が発生する可能性が最も低いようです。
解決
可能であれば、ローカルで同じブランチ名を使用することをお勧めします<!> amp;リモートで。次に、git push
はすべてのローカルブランチを中央リポジトリの対応するブランチにプッシュします。
ローカルリポジトリとリモートリポジトリで異なるプレフィックスを使用するには、新しい機能ブランチを作成するたびに、構成ファイルにマッピングを追加する必要があります。 topic / BRANCH_NAMEのマッピングを設定するコマンドは次のとおりです
git config remote.origin.push refs/heads/topic/BRANCH_NAME:michael/BRANCH_NAME
他のヒント
[remote <!> quot; origin <!> quot;]セクションで、マッピングごとに1行追加します。マスターからマスターへ。
push = refs/heads/master:master
push = refs/heads/topic/feature:michael/feature
git-configコマンドを使用してそれを行う方法がわかりません。
これ以降、ストレートなgit push(パラメーターなし)を実行すると、すべてのブランチが同時にプッシュされることに注意してください。
ローカルとリモートで同じブランチ名を保持しない理由を説明しますか?
次のような方法で、リモートの別の追跡ブランチにブランチをマップできます。
git remote add heroku git@heroku.com:YOURAPPNAME.git
git checkout -b heroku -t heroku/master
あなたの設定は@Paulが提案するものと同様になります(実際には少し<!> quot; simpler <!> quot;実際)。
私にとってうまく機能する使用手順については、この要点を(私が調整して)参照してください https://gist.github .com / 2002048 。