私は github ソーシャルコーディングにかなり慣れていないため、github ガイドラインに従うのに苦労しています。何が起こったのか、何を達成しようとしているのかを説明しようと思います。より経験豊富な git ウィザードが、そこに到達するために必要なアーケード コマンドを理解するのに役立つことを願っています。
- 元のプロジェクト: https://github.com/phatboyg/MassTransit
- 私のフォーク: https://github.com/davidcie/MassTransit
- プラットフォーム: Windows、Github for Windows + その PowerShell を使用
どうしたの
- 私は2012 年 7 月に MassTransit をフォークしました。当時のマスターブランチはバージョンv2.1.1で、最後のコミットは 2012 年 3 月 29 日でした。
- github のアドバイスに従い、トピック ブランチでいくつかの変更のコーディングを開始しました。
- いくつかのコミットの後、機能が完成したときに、トピック ブランチをクローンのローカルマスターにマージし、それを github にプッシュしました。
- 2012 年 3 月 29 日以来、MassTransit は開発ブランチで開発されていました。v2.6.0 を構成するこれらの変更はすべて、最近マスターにマージされました。
やりたいこと
アップストリーム/マスターにマージされたすべての変更を取得したいと思います。できれば、数百のファイルの 1 つの大規模なコミットではなく、それぞれのコミットとして。以前の アップストリーム/マスター(2012 年 3 月 29 日付け) で開発を行っていたため、3 月 29 日の最後のアップストリーム/マスターの変更と 8 月 8 日の最初のコミットの間にいくつかのコミットを効果的に「挿入」する必要があると思います。その上に、後で起こったことを追加します。それ、どうやったら出来るの?
(また、その過程でコミット/フォークを破棄したくありません;-)
私が試したこと
git checkout master
git remote add upstream git://github.com/phatboyg/MassTransit.git
git rebase upstream/master
git push
git push
しかし、私のローカル ヒントがオリジンより 10 コミット遅れていると不平を言って、それは私にはできませんでした (おそらく、トピック ブランチで作成し、後でorigin/masterにマージされたコミットですか?)。
おすすめは?
お勧めに噛まれてしまったようです。例えば。おそらく、別のブランチを作成する方がよいでしょう。local-master、それを自分のマスターとして扱います。その後、マスターは上流/マスターと連絡を取り合うためだけにそこにあり、私は時々オリジン/マスターを上流/マスターにリベースし、オリジン/ローカルマスターとマージします...
皆さんはどのようにフォークを管理していますか?
その他の質問
ブランチの履歴、どのブランチが別のブランチといつマージされたかなどを視覚化する方法を見つけることができませんでした。Github for Windows は、現在選択されているブランチのフラットな履歴のみを表示します (ここでは悲しい顔です)。Web サイトには、ネットワークの視覚化がいくつかあります (ここに MassTransitの視覚化があります) が、これは TortoiseHg のグラフよりもはるかに情報量が少ないと感じます。明らかな何かが欠けていますか?他の人は、何がいつ、何とマージされたか覚えていますか?
編集(8月31日)
何が起こったのかを説明するために、貧乏人の視覚化を共有しています.
- C1がupstream/masterで最新だったときにフォークしました。
- 次に、 origin/feature-1を開発しました。
- 機能が完成したら、それをorigin/masterとマージしました。
- アップストリーム/メガ機能が完了すると、アップストリーム/マスターとマージされ、事実上、 C2とC3がアップストリーム/マスターにコピーされました。(あるいは、アップストリーム/マスターがアップストリーム/メガ機能にリベースされたのでしょうか?)
- C2、C3、およびC4をorigin/masterにコピーしたいと思います。