79

時々、この問題に遭遇します。

いくつかの問題が発生しているため、レールのソースコードを読むために次のことをしたとしましょう。

git clone git://github.com/rails/rails.git

調査中、私は何かをテストしましたが、今は Rails コア チームに見てもらいたい修正があります。自分の変更をフォークされたバージョンの Rails にプッシュするにはどうすればよいですか?

クローンを作成したとき、フォークしたバージョンではなく、読み取り専用バージョンをクローンしたことを思い出してください。

分岐に反対しているわけではありません。ただ、ブラウジングして何かを追加したいと思うことがあります。

4

4 に答える 4

115

レポを複製すると、複製したレポを参照するリモートという名前が自動的に設定さoriginれます。これは現在、上流の Rails プロジェクトを指していますが、プッシュできる独自のフォークを作成し、プッシュできるようにそこを指すリモートをセットアップする必要があります。

最初のステップは、アップストリームの GitHub プロジェクト ページで [Fork] ボタンをクリックすることです (フォークに関する GitHub の手順の画像)。

GitHub フォーク ボタン

それが完了したら、そのリポジトリの URL を見つけてコピーします。読み取りおよび書き込みアクセス権を持つ SSH URL を使用していることを確認してください。git@github.com:nadal/rails.gitユーザー名がnadal.

リモートを作成できるようになりました。これにより、Git はリモート リポジトリを追跡し、アクセス権に応じてリモート リポジトリからプルまたはプッシュすることができます。originプッシュする先 (設定した人数) に置き換えるか、originアップストリームを指すままにして代わりに新しいリモートを作成するかを選択できます。最初のセットアップの方法を示します。2番目は簡単に理解できるはずです。

originGitHub のフォークを指すように変更するには、おそらくアップストリーム ブランチをどこかに残しておきたいので、名前を次のように変更しupstreamます。

git remote rename origin upstream

次に、フォークを指す新しいリモートを作成します。

git remote add -f origin git@github.com:nadal/rails.git

これで、新しいフォークにプッシュできるはずです。

git push origin master

GitHub にプッシュした変更に満足し、Rails チームの誰かに見てもらいたい場合は、2 つの選択肢があります。1 つは、GitHub を使用してプル リクエストを送信することです。その方法については、そこにあるドキュメントを参照してください。ただし、小さなパッチが 1 つまたは数個しかない場合は、Rails チームは、Lighthouse チケットを作成してパッチを添付することをお勧めします。詳細については、Rails への貢献に関する説明を参照してください。

編集これは、何が起こっているかを示す図です。あなたが行ったことは、単にアップストリームの Rails リポジトリを複製することです。これで、自分のマシンに自分のレポができました。これは次のように参照さgit://github.com/rails/rails.gitoriginます。

GitHub: git://github.com/rails/rails.git
                    ^
                    | |
リモート: 起源
                    | |
あなたのマシン: rails/

フォークしてからクローンを作成すると、次のようになります。

Github: git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                                                           ^
                                                           | |
リモート: 起源
                                                           | |
あなたのマシン: rails/

私の指示に従うと、次のようになります。

Github: git://github.com/rails/rails.git <-- git@github.com:nadal/rails.git
                        ^ ^
                        | | | |
リモート: 上流の起点
                        | | | |
お使いのマシン: \--------------------------rails/

これは、フォークによって得られるバージョンと同じですが、upstreamリモートもあるため、公式の変更を追跡してコードにマージできます (フォークしたバージョンを作成した場合は、upstreamリモートを次のように追加することをお勧めします)。良い)。

于 2010-11-17T21:36:47.930 に答える
1

それは問題ではありません。必要に応じて、フォークされていないリポジトリを指定して、別のリモートを追加できます。変更をそれにプッシュします。

于 2010-11-17T21:17:45.023 に答える
0

または、フォークしたくない場合は、メンテナンス チームによっては、パッチを作成して提出することもできます。一般的には、他のコメントで説明されているように github でフォークするか、独自の git リポジトリでリポジトリを利用できるようにし、元のリポジトリのメンテナーにマージするリポジトリとブランチの情報を提供します。

于 2010-11-17T21:43:08.633 に答える