2011-11-17 15 views
10

私は分岐を使用して、outプラットフォームのカスタムインスタンスを作成し、展開しています。これらのインスタンスは通常、「マスター」ブランチからブランチとして開始され、いくらかカスタマイズされ、テストとプロダクションに展開され、最終的にアーカイブされます。git merge to masterブランチを防止する

新しい機能やバグ修正がマスターに追加された場合、それらをプロジェクトインスタンス(ブランチ)にフェッチ/マージすることはできますが、ブランチからマスタへの変更をマージすることはほとんどありません。これは最近間違って発生し、深刻な頭痛を引き起こしました。リポジトリを更新するためにgit pullを実行すると、すべてがマスターブランチに統合され、メインリポジトリにプッシュバックされました。

マスターへのマージバックを禁止する簡単な方法はありますか?少なくとも、いくつかの--forceフラグが必要ですか?

答えて

2

他のブランチからのマスターへのマージを、誰にもマスターブランチをプッシュすることを禁止することによって確実に行うことができます。権限を持つ人はそれを行うことができます。 Gitoliteは、ブランチへのアクセスを細かく調整できるようにするものです。また、独自のサーバーサイドフックを作成して、特定のユーザーでない限り、マスターブランチの更新を拒否することもできます。

+0

downvoteとは何に上流の変更をプッシュする必要がどこまれなケースで

git push 

を使用し、カスタムインスタンスへの変更をプッシュするには?私の答えが間違っていることを教えてください。私は明確にします。ありがとう。 –

+0

こんにちはアダム、私はあなたの答えを落としたとは思わない。私は実際に私がそれを上げることをかなり確信しています。しかし、私が間違いを犯した場合、ごめんなさい。また、Gitoliteは私たちのニーズにはあまりにも多すぎますが、私はサーバー側のフックが私が必要とするものをどのようにすることができるかを見ることができます。 – balm

+0

驚くほど簡単です。私はあなたにスピンを与えることをお勧めします。最大のメリットは、キー管理を大幅に簡素化することです。ああ、私はあなたがそれを落としたということではありませんでした。あなたはその情報を得ることができません。なぜ私の答えが誰かを満足させなかったのか、それとも私が間違いを犯したのか、本当に不思議でした。 –

-1

マスターにマージするのを避けたい場合は、事前結合フックを使用してそれを禁止することができます。

+1

pre-mergeフックのようなものがあるという証拠は見当たりません。 – pjmorse

1

Gitは、複数のリモートリポジトリを扱うことができてとても満足しています。

のそれぞれのリモートリポジトリを使用することをお勧めします。カスタムインスタンス。これは、あなたのワークフローを変更することはありません。Gitは、起点に関係なく2つのブランチをマージできます。 「リモート・マスター」あなたは

mainはあなたが masterとして参照しているリモートリポジトリです(私は名前を変更し
git checkout <custom-branch> 
git fetch main 
git merge main/master 

のようなものを入力したいあなたからのバグ修正と「カスタムインスタンスを」更新する

お近くの支店のために)

をブランチとリモート間の混乱を避けるために、ではなく、インスタンス固有のリモコンを指定し、リモート追跡ブランチとしてmainを指定しないでください。すなわち、カスタムインスタンスごとに1つのリモートリポジトリ。

あなたは「マスター」ブランチ使用

git push main 
+0

ありがとうございます。それはまさに私たちが働く方法ですが、何とか誰かがgit pushをやったのです。すべてgit pullやそれを組み合わせたようなものでした。それとも私が理解していることを放棄しますか? – balm

+0

git pullを使用しないでください。 Gitが最初にフェッチし、ローカルブランチをマージ、リベースまたはリセットして、更新されたリモート追跡ブランチに応じて動作します。 –

+0

私はアダムに同意します、それが私のやり方です。あなたがあなたの変更をプッシュしたり、物事が醜いものになった後に、あなたがrebaseしないようにしてください。 –

関連する問題