8

私のチームも私も Git は初めてです。これまで CVS を使用してきました。リモートリポジトリがあり、私たち一人一人が独自のリポジトリを持っています。私たちはそれぞれ機能やバグに取り組んでいますが、同じ機能の別の部分に取り組んでいる人もいます。

1 つが完了すると、変更をコミットしてプッシュします。別のプログラマーがそのコードを使用したい場合があります (たとえば、BL で作業していて、別のプログラマーが UI で作業している場合)。ただし、コードがまだコンパイルされていないか、作業ディレクトリがまだ汚れている可能性があるため、何もコミットしません。

これまでのところ、stash を使用するという提案しか見つけられませんでしたが、私たちはそれを不快に感じています。リモートからコードをプルして、コミットされていないコードとマージしたいのですが、Git を理解している限り、これはおそらく不可能です。

私たちがリモートで作業するための最良の方法は何だと思いますか?

4

3 に答える 3

20

問題

ワークフローでの CVS/SVN の習慣、特に「大きなパッチ」の考え方に苦しんでいます。

ソリューション

Git には、非常に安価な分岐モデルとインタラクティブなステージングがあります。この結果、フィーチャー ブランチで作業し、統合されていないブランチをパッチ キューとして扱う必要があります。

したがって、「コード、コード、コード、コード、プッシュ、プル、マージ、スクリーム」の代わりに、より扱いやすいことを行う必要があります。

  1. たくさん分岐します。ミニ機能または変更セットごとにブランチを作成します。
  2. 小規模でアトミックな変更を大量にプライベート ブランチにコミットします。git add -pあなたの友達です。
  3. 統合ブランチにマージする前に、統合ブランチに対してプライベート ブランチをリベースします。
  4. 完全な変更セットがあるか機能を終了するたびに、統合ブランチにプッシュします。

Git コミットをパッチとして扱い、ブランチをパッチ キューとして扱い始めると、最終的には、人々が片頭痛を起こすことなく、リポジトリ間で小さな変更セットをチェリー ピックまたはマージできるワークフローになります。Git ブランチ モデルを使用すると簡単に作業できますが、作業を適切なサイズに分割するのはチーム次第です。

于 2012-06-24T08:32:35.273 に答える
8

独自のコードをプッシュしない限り、コミットしてからgit pull.

コミットは、次のプッシュまでリポジトリに対して非公開のままになります。

ギットプッシュ

したがって、同じ ' feature' ブランチで作業しながら、同僚からのプッシュの恩恵を受けることができます。

ただし、自分の作品も公開する必要がある場合は、' ' ブランチを使用して、自分developerX_featureのブランチをプッシュし、他の人が自分のブランチをフェッチして、ローカル リポジトリ内の自分の ' ' ブランチにマージすることができます。developerY_feature

于 2012-06-24T08:13:18.100 に答える
0

枝を使おう!ブランチを作成し、このブランチに変更をコミットし、このブランチをプッシュして、他の人がこのブランチを取得し、ブランチ間を (オフラインでも) 切り替える (チェックアウトする) ことができます。メインの安定したブランチ (マスター) には影響しません。

于 2012-06-24T08:13:38.040 に答える