誰もがマスターで作業しているときにgitの痛みを最小限に抑えるにはどうすればよいですか?
約10人のドキュメントチームが最近SVNからGitに移行しました。SVNでは、誰もがマスターに取り組んでいました。これは私がずっと嫌っていたモデルですが、その変化をもたらすことはできませんでした。Gitへの移行の一環として、それを修正することに同意しましたが、まだそれを行うことはできません(任意のブランチからのビルドを許可するビルドの変更を待機しています)。一方、誰もがマスターに取り組んでいます。はい、私はこれがひどいことを知っています、信じてください。 SVNを使用していたときよりも多くのしゃっくりが見られますが、その一部はGitの2段階モデル(ローカルおよびリモート)に起因しています。コミットすることはできてもプッシュできない場合や、保留中のローカル変更と競合してプルする場合があります。昨日、誰かがマージを間違えて最近の変更をなんとかしました-マージが間違っていました。(彼は彼が何をしたかを正確に伝えることができませんでした。彼はGUIを使用しているため、シェルの履歴を調べることはできません。) 最も熟練したGitユーザーとして(読みます:以前に使用しましたが、非常に複雑なものではありません)、私はポリシーを設定し、ツールを教え、混乱をクリーンアップします。ブランチでの開発に切り替えることができるようになるまで、ツールを使用して、共有されたアクティブなマスターのエラーが発生しにくいようにする方法にどのような変更を加えることができますか? チームはWindowsでTortoise Gitを使用しています。以前Tortoise SVNを使用していたため、Tortoise Gitを使用しています。(私は個人的にCygwinの下のコマンドラインをいくつかの操作に使用していますが、チームはGUIが必要であることを明確にしました。これを使用します。) Tortoise Gitには「Commit&Push」という単一の操作があり、常にそれを行うように指示しました。しかし、それはアトミックではありません-コミット(結局ローカル)はうまく機能するが、プッシュは(競合やネットワークの問題などのために)うまくいかないことがあります。その場合、あいまいなエラーが発生します。私は、彼らが持っている場合のBitbucketはコミットログをチェックするためにそれらを言ったいかなる彼らがプッシュする、それが表示されない場合、コミット最近の疑問をして。(そして、それが問題である場合は競合を解決するか、何をすべきかわからない場合は助けを求めます。) チームはすでに「早期かつ頻繁にプルする」という良い習慣を持っています。しかし、プルは競合を引き起こす可能性があるようですが、これは新しいと思いますか?新しくない場合は、SVNよりはるかに頻繁です。Gitがプルする方法(マージではなくリベース)を変更できると聞いたことがありますが、そこでのトレードオフ(または環境でそれを行う方法)について十分に理解していません。 サーバーはBitBucketです(Githubではありません)。私はリポジトリを完全に管理できますが、より一般的にはサーバー上で管理しません。いずれも変更できません。 ソースファイルはXMLです。グラフィックファイルもあります。これは、マージできないことを誰もが知っていますが、衝突はほとんどありません。マージの競合は、グラフィックではなくXMLファイルから発生します。 Gitの使用にどのような変更を加えると、チームで共有マスターがよりスムーズになり、レビュー済みのテスト検証済みのプルリクエストで機能ブランチを使用できるようになりますか?