gitで異なるプレフィックスを持つローカルブランチをリモートブランチにマッピングできますか?

StackOverflow https://stackoverflow.com/questions/167697

  •  03-07-2019
  •  | 
  •  

質問

私はここで半集中型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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top