時々私はこの問題に遭遇します。
Railsのソースコードを読むために以下を実行したとしましょう。問題が発生しているためです。
git clone git://github.com/Rails/rails.git
調査中に何かをテストしましたが、修正がありましたRailsコアチームに見てもらいたいです。変更をフォークバージョンのRailsにプッシュするにはどうすればよいですか。
クローンを作成したとき、フォークバージョンではなく読み取り専用バージョンのクローンを作成したことを思い出してください。
私がフォークに反対しているわけではありません。ただ閲覧するだけだと思って、何かを追加したいだけなのです。
リポジトリを複製すると、複製したリポジトリを参照するOrigin
というリモートが自動的にセットアップされます。これは現在、上流のRailsプロジェクトを指していますが、プッシュできる独自のフォークを作成してから、そこにポイントするリモートをセットアップしてプッシュできるようにする必要があります。 。
最初のステップは、上流のGitHubプロジェクトページの[フォーク]ボタンをクリックすることです( GitHubのフォークに関する説明 の画像):
それが完了したら、そのリポジトリのURLを見つけてコピーします。読み取りおよび書き込みアクセス権があるSSH URLを使用していることを確認してください。ユーザー名がnadal
であると仮定すると、[email protected]:nadal/Rails.git
のようになります。
これで、リモートを作成できるようになりました。これにより、Gitはリモートリポジトリを追跡し、アクセスに応じてそこからプルしたりプッシュしたりできます。 Origin
をプッシュ先のリモコン(設定している人の数)に置き換えるか、Origin
をアップストリームに向けたままにして、代わりに新しいリモコンを作成するかを選択できます。最初のセットアップ方法を紹介します。 2番目は簡単に理解できるはずです。
Origin
をGitHubのフォークを指すように変更するには、おそらく上流のブランチをどこかに置いておきたいので、名前をupstream
に変更します。
git remote rename Origin upstream
次に、フォークを指す新しいリモコンを作成します。
git remote add -f Origin [email protected]:nadal/Rails.git
そして今、あなたはあなたの新しいフォークにプッシュすることができるはずです:
git Push Origin master
GitHubにプッシュした変更に満足し、Railsチームの誰かに見てもらいたい場合は、2つの選択肢があります。1つは 送信する)です。プルリクエスト GitHubを使用。その方法については、ドキュメントを参照してください。ただし、1つまたはいくつかの小さなパッチしかない場合は、Railsチームが次のことをお勧めします- 灯台チケットを作成 パッチを添付します。詳細については、 Railsへの貢献 の手順を参照してください。
editこれは、何が起こっているかを示す図です。これで、アップストリームRailsリポジトリのクローンを作成するだけです。これで、git://github.com/Rails/rails.git
をOrigin
として参照する独自のリポジトリが自分のマシンに作成されました。
Github:git://github.com/Rails/rails.git ^ | リモート:Origin | あなたのマシン:Rails /
フォークしてクローンを作成すると、次のようになります。
Github:git://github.com/Rails/rails.git <[email protected]:nadal/Rails.git ^ | リモート:Origin | お使いのマシン:Rails /
私の指示に従えば、ここにあなたが得るものがあります:
Github:git://github.com/Rails/rails.git <[email protected]:nadal/Rails.git ^ ^ | | リモート:アップストリームオリジン | | [。
これは、フォークで取得するバージョンと同じですが、upstream
リモートもあるため、公式の変更を追跡してコードにマージできます(フォークバージョンを作成した場合は、おそらくupstream
リモートも追加したい)。
クローンモードからフォークモードに切り替える非常に簡単な方法は、 http://hub.github.com/ のhub
ラッパーを使用することです。
これがインストールされたら、実行するだけです
hub fork
読み取り専用クローン内から。
それは問題ではありません。必要に応じて、フォークされていないリポジトリを指定して、別のリモートを追加できます。それに変更をプッシュします。
または、フォークしたくない場合は、メンテナンスチームによっては、パッチを作成して送信することもできます。通常は、他のコメントで説明されているようにgithubでフォークするか、独自のgitリポジトリでフォークしてリポジトリを利用できるようにし、元のリポジトリのメンテナに、マージするリポジトリとブランチへの情報を提供します。