既存のクローンからフォークとしてリポジトリを追加するGithub


21

そのため、ghithubのアップストリームソースからクローンしたgitリポジトリがあります。いくつかの変更を加えました(コミットされておらず、masterブランチにあります)。私がやりたいのは、変更を新しいブランチとしてgithubページにプッシュし、githubにまだフォークとして表示させることです。

それは可能ですか?私はgitとgithubを初めて使います。私の質問は理にかなっていますか?

私が考えることができる最も簡単な方法(これが最も周りの方法だと確信しています)は、githubでリポジトリをフォークすることです。別のディレクトリにローカルでクローンします。アップストリームオリジンリポジトリを追加します。その新しい分岐レポにブランチを作成します。コードの変更を手動で新しいローカルリポジトリにコピーします。そして、それをgithubに押し戻します。

これは、ディレクトリを複製せずにそれを行う簡単な方法がある一般的なユースケースですか?

私はLinuxではコマンドラインgitを使用しており、ここの人々はより良​​い答えを与えているので、SOとは対照的にここに尋ねていると思いますimo =]


それは主にgithubの質問のようですから、私はこのオン話題は技術的であると思いますが、それは他の場所よりよくするかもしれない
マイケルMrozek

回答:


22

すべてを既存のリポジトリから実行できます(フォークを新しい(ローカル)リポジトリにクローンしたり、ブランチを作成したり、コミット/変更をコピーしたりする必要はありません)。

  1. コミットを公開する準備をします。

    既存のローカルコミットを調整します(git commit --amendおよび/またはなどgit rebase --interactive)。

    公開したいコミットされていない変更をコミットします(ローカルマスターとコミットされていない変更、またはコミットされていない変更をコミットすることを意味するかどうかわかりません;コミットされていない変更は「ブランチ」、それらは厳密に作業ツリーにあります)。

    あなたの名前の変更、マスターそれをあなたがあなたの「新しいブランチ」の名前を与えるために枝を。これは必ずしも必要ではありません(任意のブランチから他のブランチにプッシュできます)が、ローカルブランチとGitHubフォークのブランチの名前が同じであれば、長期的に混乱を減らすことができます。

    git branch -m master my-feature
    
  2. 上流のGitHubリポジトリを
    (eg)github.com:UpstreamOwner/repostory_name.gitとして
    (eg)としてフォークしますgithub.com:YourUser/repository_name.git

    これはGitHub Webサイト(またはGitHub APIを使用する「クライアント」)で行われ、ローカルGitコマンドは関係ありません。

  3. ローカルリポジトリ(上流のGitHubリポジトリから最初にクローンされ、マスターに変更があるリポジトリ)で、フォークリポジトリをリモートとして追加します。

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. GitHubのフォークリポジトリにブランチをプッシュします。

    git push github my-feature
    
  5. 必要に応じて、リモートの名前を変更して、フォークを「オリジン」、アップストリームを「アップストリーム」として認識します。

    git remote rename origin upstream
    git remote rename github origin
    

    リモートの名前を変更する理由の1つはgit push、リポジトリを指定せずに使用できるようにするためです(デフォルトは「origin」です)。


完璧に動作しましたが、GitHubリモートを作成するときに、GitHub URLの「https://」が欠落していると思います
-jesjimher

1
@jesjimher:この投稿の「URL」は、HTTP(S)ではなく、SSHを使用する「scpのような構文」を使用しています。また、コロンをスラッシュに変更してHTTP(S)URLとして使用する必要があります(サーバーが追加の名前空間を変更せずに両方をサポートしている場合、GitHubはそうします)。
クリスジョンセン

おっと、クリス、コロンをスラッシュと間違えて入力していたので、「https」を追加しないと機能しませんでした。ノイズで
ごめんなさい...-jesjimher

ステップ4で、-uオプションを使用すると、ローカルブランチが同じリモートブランチをmy-feature 追跡するようにできますorigin/my-feature。コマンドは次のgit push -u github my-feature
とおりです。– YaOzI

それは素晴らしいことです。変更しなければならなかったのはgithubアドレスだけです!
ティコ

0

ツールがあります: hub

hubは、gitGitHubでの作業を容易にする追加の機能とコマンドで拡張するためにラップするコマンドラインツールです。

次のことができます。

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.