web-dev-qa-db-ja.com

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

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のローカルリポジトリにそのブランチが必要です。

これどうやってするの?

67

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


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

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

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

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

132
Daniel Hilgarth

リモートを追加しない方法。

git checkout --Orphan fork_branch
git reset --hard
git pull <url of fork> <branch>
16
Alex78191