別のリポジトリからブランチをプルするGit?


90

github上のリポジトリのクローンであるローカルgitリポジトリがあります。誰かがリポジトリをフォークし、新しいリポジトリの新しいブランチに変更を加えました。この新しいブランチを自分のリポジトリに移動したいと思います(マスターとマージする前に最初にローカルで作業するため)。

新しいブランチを作成してからフォークされたリポジトリからプルしようとしましたが、新しいブランチはマスターブランチのコピーであり、ローカルファイルが変更されているため、文句が表示されます。

error: Your local changes to the following files would be overwritten by merge

では、他のリポジトリのブランチをローカルリポジトリの新しいブランチにプルするにはどうすればよいですか?

それが理にかなっていることを願っています。そうでない場合、これは私のリポジトリです:https//github.com/MatthewLM/cbitcoin

ご覧のとおり、誰かがブランチ「linuxBuild」を使用して新しいリポジトリを作成しました:https//github.com/austonst/cbitcoin/tree/linuxBuild

MatthewLM / cbitcoinのローカルリポジトリにそのブランチが必要です。

これどうやってするの?

回答:


161

git statusステージングされていない変更がローカルリポジトリに存在しないことを示すことを確認する必要があります。
これを行うには、最初にローカルの変更を隠してから、そのブランチをプルします。その後、あなたはあなたの隠し場所を適用することができます。


ローカルリポジトリにフォークのブランチ構造を再作成する場合は、次の操作を実行できます。

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>

これにより、フォークfork_branchと同じ履歴を持つローカルブランチが作成されます<branch>。つまり、フォーク内の場所fork_branchから分岐します。さらに、ローカルブランチはフォーク内のそのブランチを追跡するようになるため、フォークでコミットされた新しい変更を簡単に取り込むことができます。master<branch>

作業コピーに変更が含まれていないことを事前に確認する必要があると思います。


OK、ありがとう。ローカルの変更が必要で、フォークからのブランチにコミットが見つからない場合、これは素晴らしいことです。しかし、新しいブランチをフォークリポジトリにあるものとまったく同じにしたい場合はどうすればよいですか?これには、この新しいブランチでフォークが発生した後、自分のリポジトリからコミットを削除することも含まれます。そうすれば、分岐がフォークされたリポジトリではなく、自分のリポジトリで作成されたかのようになります。
マシューミッチェル

あなたの答えは、私がしなければならないことに対して受け入れられる解決策ですが、新しいブランチをリポジトリにプルできれば、もっと簡単だと思います。他の人の言うことを見るのをしばらく待ちます。
マシューミッチェル

@MatthewMitchell:アップデートを確認してください。それはあなたが探していたものですか?
ダニエルヒルガース2013年

さて、最終的には別のブランチとマージする方法を使用しました(マスターとマージしただけです)が、別のリポジトリからのブランチとまったく同じようにしたい場合は、フェッチを試してみますあなたが説明したチェックアウト方法。ありがとう。
マシューミッチェル

別のリポジトリから別のブランチ「gh-pages」を移行するために使用されます。
Marcello de Sales

39

リモートを追加せずにメソッド。

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>

2
これをありがとう、私はそれをブックマークして、それに戻ってき続けます!
ShaneSmiskol19年

2
2020年のベストアンサー
ダイヤモンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.