2011-01-04 1 views
4

現在、私はgitとgithubを使ってrailsアプリケーションをコーディングしています。私は通常一人で作業しますが、私の最新プロジェクトでは第二の開発者と一緒に作業しています。私は別のユーザーと作業するための標準的な方法を理解しようとしています。gitとgithubを使った適切なワークフロー

現在私は彼に私のgitrepoをフォークさせてから、変更準備ができたらプルリクエストを送信します。私がもっと多くのことを書いていることを除いて、それはそれほど悪くはありません。そして、彼がプッシュするためにフォークキューに変更があると、それらの多くは失敗します(彼が最後に押したときから変更していなくても)。

すべてのプロセスが、彼が毎回リフォークする方が効率的に思えるようになり、間違っていると思われます。私たちはフォークの代わりにブランチを使用すべきでしょうか?フォークや枝?

ありがとうございます!

答えて

1

第2の開発者は、最初にGitHubリポジトリをローカルリポジトリにプルする必要があります。

そして、彼はプルリクエストを行うことができます。

  • 再フォークする必要はありません:あなたの両方がために働いている場合(エクストラブランチの
  • 必要はありません(とにかく意味がありません「フォーク」はGitHubの側のクローンです)機能の同じセットは、あなたが両方ともプル要求のアイデアは、あなたGitHubのレポへの適用が容易早送りもの()となりますパッチを提出したまま

例えば「master」)上で動作することができます。
これは、プルリクエストを行う前に、ローカルで最初に競合を解決することによって達成されます。


その他のオプションは、あなたGitHubのプロジェクトの「協力者」としての第2の開発者が(彼は直接プッシュすることができるだろう)と宣言するだろうが、それは「最初に引く」ことに変わりはありませんプッシュが簡単になることを確実にするために必要である。

+0

問題の一部は、まったく同じコードを持っていると言えます。その後、私は何度も変更を加えます。彼が何か変更を加えていないので、引っ張りをするときに闘争は起こらないはずです。しかし、まだ紛争が起こるでしょう。これはsvnでの私の経験に基づいて私が理解できないgitの一部に過ぎないのでしょうか? – Elliot

+0

@Elliot:そうです...この場合、彼は実際に彼自身の枝を作って、その支店からあなたのGitHubリポジトリにプルリクエストをしてください。それは共通の祖先の問題かもしれません。あなたはその設定をテストできますか(あなたと同じブランチに直接ではなく、ローカルブランチでパッチを作成するよう求めるプルリクエスト)? – VonC

1

gitワークフローは柔軟なツールだからですが、単純なワークフローは 'master'ブランチと 'develop'ブランチを持つことです。 githubをフォークすることなく、協力者がGithubのプルリクエストを常に提出しなくても、リポジトリに直接プッシュしてプルすることができます。

ローカルブランチの大部分を開発ブランチ上に作成できますが、リモート開発ブランチからプルダウンしてお互いのコードをマージすることができます。この段階では、マージの競合を処理できます。リモート。

頻繁にマスターをプルダウンして、それを開発用にマージすることができます。アイデアは、マスターブランチがより安定していて、いつでも解放できるように準備できているため、アクティブな開発が行われないということです。それがすべてです。

開発ブランチから「機能ブランチ」を作成することもできますが、原則は同じです。開発するには「上に」、マスターには「上に」マージします。

重要なことは、頻繁に作業を同期(マージ)することです。そうしないと、コードベースの別々のコピーの相違が大きくなり、競合の可能性が高くなります。競合が続いている場合は、より頻繁にプッシュして引っ張ってください。違いが小さくて扱いやすくなります。

特に、両方が同じファイルを頻繁に使用している場合、競合が発生する可能性があります。そのような場合には、コードベースの異なる部分(ファイル)を変更する機能に作業を分けることで、時には互いのつま先を踏み外すことが少なくなります。

プルする前にローカルの変更をコミットすることを忘れないでください。そうしないと、変更はステージング中であるとみなされ、プル中に自動的にマージされません。幸運なことに、gitはかなり寛容で、マージ競合を処理するのには非常に優れています。

関連する問題