別のリポジトリからのGitプル


95

と呼ばれるリポジトリGenericがあります。これは一般的なアプリケーションです。私はそれをと呼ばれるリポジトリに分岐しましたAcme。これは、アプリケーションに保存されたGenericリポジトリに基づいて構築され、それにAcme Coブランドを追加します。

でコア機能に変更を加えた場合、でコア機能に加えた最新の変更でリポジトリGenericを更新しAcmeますGeneric。どうすればいいですか?

私が知る限り、私は基本的に上流リポジトリで行われた変更を現在のフォークにマージしようとしています。

何か意味がある場合は、これを実行しようとしています。これは、(Acmeこの例のように)個々のクライアントに基づいて構築およびブランド化する汎用アプリケーションがあるためです。よりクリーンな方法がある場合は、お知らせください。

回答:


134

Acmeリポジトリで次のコマンドを発行します。リポジトリupstreamを指すという名前の新しいリモートリポジトリを追加しますGeneric

git remote add upstream https://location/of/generic.git

その後、次のコマンドを使用Genericして、に加えられた変更を現在のブランチにマージできますAcme

git pull upstream

自動的にマージせずに変更をダウンロードするだけの場合は、のgit fetch代わりに使用しますgit pull

そのリポジトリへのプッシュを無効にする場合は、次のようにしてプッシュURLを無効なURLに設定します。

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

Gitは、プッシュしようとするとレポを見つけられないことを怒鳴りつけますupstream(そして、Rickrollについては申し訳ありませんが、私の頭に現れた最初のランダムな文字列でした)。


6
ありがとう、ありがとう。もう1つだけ、このリモートを読み取り専用にする方法があるので、誤ってプッシュしてしまうことはありませんか?
Libbux 14

1
私は答え始めましたが、McLovinはすでに彼の答えを編集してそれを含めるようにしています。
Frankie Simon、

4
git 2.9以降、-allow-unrelated-historiesフラグを指定する必要があります。stackoverflow.com/a/37938036/3799847を
sfinks_29 '10 / 10/26

5
発行する必要がありましたgit pull --allow-unrelated-histories upstream master
アレックジェイコブソン2017

私はそれを試しましたがgit pull upstream、ハングします...何かアイデアはありますか?
Paulo Carvalho

6

別のリポジトリから特定のブランチをプルするには、以下のgitコマンドを使用できます。

git pull <git_url> <branch> --allow-unrelated-histories
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.