2017-12-24 28 views
2

私はローカルのBitBucketサーバーを持っており、Web UIからマスターに変更をマージします。 永遠の個人支店で仕事をしたいと思います。定期的にマージリクエストを作成します。1つのgitブランチから別のものにプッシュする、別のサイトにプッシュする

私はgit pullorigin/itsadokに私のローカルマスタをプッシュする私のmasterローカル、およびgit pushorigin/masterをマージしたいと思います。次に、サーバー上でマージリクエストを作成し、変更内容をorigin/itsadokからorigin/masterにマージします。

BitBucket server: origin/itsadok --- via PR --> origin/master 
         ↑        | 
Local machine:   \---------- master <---------/ 

と思われます。

私は手動でgit push origin master:itsadokを行うことができますが、それはデフォルトにしたいと思います。デフォルトのプッシュターゲットを設定する唯一の方法は、branch.master.mergeからrefs/heads/itsadok(と設定はpush.defaultからupstream)ですが、プルは私の個人的なブランチからもマージされるようです。

既定のプッシュとプルが上記のように機能するようにgitを構成する方法はありますか?

編集:それは私がリモート個人支店と同じローカルブランチに名前を付け、currentpush.defaultを設定、およびREF /ヘッド/マスターへbranch.itsadok.mergeを設定することにより、非常に似た何かを達成できることを私に起こりました。言い換えれば:

BitBucket server: origin/itsadok --- via PR --> origin/master 
         ↑        | 
Local machine:   \---------- itsadok <--------/ 

これはほとんど動作しますが、私は私の地元の支店がmasterと呼ばれていると仮定したスクリプトを持っているので、このソリューションは、私にとってはかなり不便です。しかし、それ以外のアイデアがなければ、私はこれで解決します。

答えて

1

プッシュrefspecの適切なマッピングによって記述された動作を実現できます。 push manualで説明したように、Gitは次の順序でプッシュするものになります。

  • 明示的に列挙された引数またはコマンドラインでオプションそう
  • push.default設定が空でない場合
  • remote.<remote_name>.push構成が存在する場合

    masterトラッキングをorigin\masterにすると、プルがうまく動作し、remote.origin.pushを設定するので、引数なしでプッシュするとワークフローに合っています:

    git config remote.origin.push refs/heads/master:refs/heads/itsadok 
    

    あなたはgit rev-parse --symbolic-full-name @{upstream}と上流分岐を印刷して設定を確認し、git rev-parse --symbolic-full-name @{push}

    でブランチをプッシュすることができます。ただし、注意点がいくつかあります:

    • git statusので、その上流でマスターを比較しますコミットが実際にプッシュされた後でも、 "1 commit ahead"通知が表示されます。
    • git pushを引数なしで実行しますが、非マスターブランチではmasterからitsadokにデータをプッシュします。これを修正したい場合は、おそらく最善の方法はrefspec configuration examples
    です
  • 関連する問題