2012-04-01 12 views
1

私は自由な時間に小さなバグ修正を提供することで有名なオープンソースプロジェクト(C++の1000万本程度)に貢献しようとし始めました。このプロジェクトはGitで管理されています。これは全く新しいものです。私はそれをどのように使うべきかについての情報を見つけようとしましたが、見つけられると思われるのは、git fetchまたはgit pullのような些細なこと以上の複雑な宗教的主張です。誰かが私に、次のワークフローを容易にするために実行する必要のあるコマンドを非常に簡単に教えてもらえますか?大規模な共同プロジェクトに小さな変更を加えるワークフロー?

  1. 完全なソースをチェックアウトします。
  2. いくつかの機能やバグ修正の作業を開始してください
  3. 毎日完全なソースをチェックアウトし、それまでの変更をマージし続けます。
  4. 私の最後のコミット
  5. (必要な場合には)戻って私の木とリモート間の差異を転がすので、私のツリーとリモート・マスターリポジトリ間のすべての相違
  6. (必要な場合には)戻ってすべての変更をロールでパッチを生成しますマスター・リポジトリ
+3

この回答は参考になりましたか?実際、それは既に持っている:[Pro Git](http://progit.org) –

+0

ああ私の良さ!私は、誰かが私が立ち上げてすぐに動くのを助ける答えを提供できることを望んでいました。それがあまりにも複雑なら、私は本を読んで辞任しなければならないと思う。 –

+2

本当に良い本だ。 –

答えて

1
1$ git clone <repository> <directory> 
2$ <edit as you please>  # suggest 'git checkout -b <new branch>' prior to edit 
3$ git pull origin master 
4$ git push origin master # you probably won't have permission for this, ask repo admins 
5$ git reset --hard 
6$ git checkout -b <new branch> origin/master # not a rollback, just leave your stuff and shift to a new branch. 
+0

ありがとう!ナンバー4については、「パッチを生成する」とはリポジトリにプッシュすることを意味しませんでした。私は、メーリングリストやbugzillaに送ることができるパッチファイルを生成することを意味しました。 –

+1

'git diff'を試してください(デフォルトでパッチを作成します) – GoZoner

+0

'git pull'を実行して、 'origin'から最新のものを取得し、次に 'git diff origin/master' diff ' – GoZoner

4
  1. チェックアウト完全なソース。

    git clone git://url

  2. あなたは同時に複数の事で作業している場合、それは各機能の独立した枝を作ること ことをお勧めし

    を修正するいくつかの機能やバグに取り組んで開始します。これらは通常、トピックブランチと呼ばれる です。

    git checkout -b <branch name> <desired base commit>

  3. 毎日完全なソースをチェックアウトし、それをそう までのところ、私の変更をマージを続行します。

    トピックブランチを使用している場合は、簡単なgit pullが使用されます。代わりに マスターで作業している場合(手順(2)をスキップした場合)、 はgit pull --rebaseを使用することをおすすめします。この方法であなたの仕事は元マスターの最新のチップに基づいて になります。

  4. もしあれば(あなたがバグ無料機能(良い 幸運を!)書かれている確信していたら、あなたは変更をマージすることができ、私のツリーと リモート・マスターリポジトリ

    間のすべての相違とパッチの生成トピックブランチを使用していた) とgit merge masterは、競合を解決してコミットします。そして、あなたは 私はロールバックするには

    を最後のコミット以降

    git format-patch <base commit for your feature>

  5. (必要な)がすべての変更をロールバックして、あなたのパッチを生成し、あなたはgit reset <options>を使用することができます。 オプションがいくつかありますが、 の違いはかなり微妙であるため、man git-resetをご覧ください。 の作業を完全に取り除きたい場合は、--hardオプションは トリックを実行する必要があります。一方、コミットされた変更 を別のコミットで元に戻す場合は、git revert <commit>はあなたの友人です。

  6. (必要な場合)私は、戻って私の木と リモート・マスターリポジトリ

    ないあなたはここで何を意味するか確認してくださいとの差異を転がり、しかし、あなたは、上流からの最新の変更でローカルレポ を更新する意味場合信じる(3)それに対処する。

関連する問題