2012-05-03 16 views
3

私はGitを学び始めています。これまでGitは素晴らしいです。私はちょうど1つの領域で混乱しています、これはちょうど誤解かもしれません。破壊的なGitコミット?

Johnが "john"ディレクトリで作業していて、Bobが "bob"ディレクトリで作業しているとします。

Johnのコードが "john"ディレクトリに必要な最終アイテムではなく、Bobがdevブランチから取得した場合、BobはJohnのすべての「悪い」コードを正しく取得しますか?

したがって、Bobは "bob"ディレクトリに簡単な修正を適用し、本番ブランチにプッシュします。 "John"ディレクトリのJohnの悪いコードが、Bobのプッシュを通じてプロダクションブランチに侵入しないのですか?

これも起こりますか? これはどのように避けられますか?

ありがとうございました!

+0

これらは、2つの異なるディレクトリで動作する同じ分岐 "開発"にあります。この理論的な状況では、ボブとジョンが最初の場所で自分の枝に分割しないことによって混乱している可能性があります... –

答えて

0

通常、「壊れたコード」をdevelopまたはmaster(これは一般名)にコミットしません。 developブランチは、通常、 "動作するはずです"というコードのためのものです。masterは "安定したコード"(svnのtrunkのようなもの)用です。新しいものを作成する場合は、新しいブランチを作成します(例:feature/myFeature)。今や誰もが知っていることですが、このコードは完全ではないかもしれませんし、通常は自分のブランチにマージすることを避けるでしょう。完了したら(それは動作するはずです)、それをdevelopに再度マージします。

しかし、シナリオが発生してもgitはこの悪質なコードが既にdevelopの一部であることを認識し、再度適用しません。

1

dev - > productionをプッシュし、本番ブランチに修正を直接コミットすることには違いがあります。後者はボブにとっては安全です。

コードを知る唯一の方法は、それを押す前にテストすることです。これは、QAチーム、回帰/単体テストなどである可能性があります。

+0

ボブがホットフィックスを行う必要がある場合、彼は生産ブランチをチェックアウトし、修正をブランチにコミットしてから、ブランチに触れずにプロダクションブランチを元に戻しますか? もしBobがJohnのようなdevブランチに自分のものをビルドしていたらどうでしょうか?ボブが、Johnのコードをそれに伴わずに、プロダクションブランチにプロジェクトを(ホットフィックスではなく)プッシュすることは可能でしょうか? –

+0

@コーダーマン - はい、あなたが話していることは、リモートレポには良い考えではない歴史を書き直すことです。 git-revertを使うのがベストです。 gitが-fを使って履歴を上書きするように強制することができますが、そのスイッチを使わないとgitは "remote is newer、あなたは最初にプルする必要があります" – flumpb