web-dev-qa-db-ja.com

GITでプロジェクトに取り組んでいる複数の人を管理する

私はGIT/GitHubに非常に慣れていません(昨日から始まっています)。 Githubで同じプロジェクトに取り組んでいる複数の人を管理するための最良の方法は何ですか?現在、私は4人の開発者で1つのプロジェクトを管理しています。

  1. ワークフローを進め、すべてが同期していることを確認するにはどうすればよいですか?

    (注:すべての開発者が1つのユニバーサルアカウントを持ちます。)

  2. 各開発者は異なるブランチにいる必要がありますか?

  3. 同じファイルで作業している2人を処理できますか?

詳細な回答を投稿してください。私は恥ずかしがり屋の読者ではありません。これをよく理解する必要があります。

35
pai.not.pi

すべての開発者がリポジトリへのコミットアクセス権を持っている場合は、特別なことをする必要はありません。リポジトリから変更をプルし、独自の変更を行い、ローカルでコミットし、何かが機能している場合はパブリックリポジトリにプッシュバックします。

一方、1人(または数人)の開発者がリポジトリへのコミットを担当していて、他の開発者がこれらのパッチを提供している場合。それぞれにリポジトリを自分のアカウントに複製させ、メインリポジトリに必要な変更がある場合はプルリクエストを送信してもらいます。

必要に応じて、特定の機能に取り組むために特定のクローンを作成することもできます。機能が完了したら、プルリクエストで同じワークフローを使用してメインリポジトリに変更を取得します。

「すべての開発者が1つのユニバーサルアカウントを持つ」とは、すべての開発者が1つのGitHubアカウントを共有し、リポジトリ内で同じコミッターとして表示されることを意味します。これは悪い考えです。個別にアカウントを作成し、それらすべてにコミットアクセスを許可する場合は、それらを共同編集者として設定します。

特定の質問については:

  1. いいえ、複数のコミットを必要とする機能、修正などにはブランチを使用します。複数の開発者が同じブランチで作業することができます。

  2. はい、gitは競合を非常にうまく処理するので、同じファイルで作業しても問題はありません。複数のメンバーによって編集されたファイルに根本的な変更がある場合は、競合の解決が常に簡単であるとは限りませんが、問題はありません。しかし、これは一緒に話すことで克服できないものではありません。バージョン管理は通信を置き換えるものではありません。

幸運を!

31
harald

私たちは2人の開発者と協力して、次のワークフローを使用しています。

  • Githubには、masterブランチとdevブランチがあります
  • マスターブランチは本番環境と同じであるか、デプロイ可能なコードが含まれています
  • Devブランチはmasterの前にあり、現在作業中のすべての新しいコードが含まれています
  • ローカルでは、どちらもdevブランチで作業し、何か準備ができたらPush to githubで作業します
  • 他の開発者は、彼の新しいコードをプッシュする前に、開発ブランチから新しい変更をフェッチします
  • 開発ブランチが良ければ、マスターブランチとマージします
  • ローカルには、いくつかの機能ブランチ発行ブランチなどがあります。
27
John

ここではテキストの回答しか表示されないので、まずはNice gitflowの写真を投稿すると思いました。絵は千以上の単語を説明します:

Simplified Gitflow

  • このフローは、継続的デプロイメントでもうまく機能します。
  • Masterブランチには、現在運用サーバーで実行されているコードが含まれています。
  • 開発ブランチには、ステージング/テストサーバーで現在実行されているコードが含まれています。
7
Jelle

私は他の3人の開発者と協力しており、私たちはこれにかなり苦労しています。開発者は、他のコミットを変更に組み込んでから本番環境にプッシュするため、実際にはまだプライムタイムの準備ができていないコミットを本番環境にプッシュすることがあります。

バージョンブランチは私たちにとってはうまくいくようです。したがって、バージョン1.0が現在の安定バージョンである場合、v1.1-developmentのブランチを作成します。開発者はこのブランチで変更を行います。テストサーバーはこのブランチをチェックアウトし、必要に応じて変更をプルします。

V1.1のすべての機能の準備が整い、テストが完了したら、v1.1をマスターとプッシュにマージします。
ブランチがあれば、開発者チームAはv1.1で作業でき、開発者チームBはv1.2で作業できます。両方のチームが互いに影響を与えることなく作業できます。チームAがBで使用できるものを開発した場合、本番環境に影響を与えることなく、これらの変更をBに取り込むことができます(これはほとんど発生しません)。

また、すぐに変更するために使用される修正プログラムブランチも使用します。

これがどのように見えるかの写真へのリンクです。 http://nvie.com/img/[email protected]

0
Greg