1

GitHub で公開されているものをプロジェクトに使用する必要があり、project AGitHub にチェックインできないいくつかの変更があり、元の作成者の作業を台無しにしますが、作成者の更新を私の会社にプルダウンする必要があります。

サテライト Git リポジトリを自社のオリジンとして保持し、実際のオリジンから更新を取得するにはどうすればよいでしょうか?

4

2 に答える 2

2

Git サブモジュールの使用を検討する

質問は少し不明確ですが、独自の Git リポジトリを持っているように思えますが、サードパーティの Git リポジトリをライブラリとしてコードに含めたいと考えています。選択肢の 1 つは、Git Submodulesを使用することです。私はこれまでにこれらのいずれかを使用したことがないので、それらがどのように機能するかを読む必要があります.

別のオプションが であるとも聞いたことがありますがgit subtree、これも私がこれまで使用したことがないものであり、現在、メインの Git ドキュメントにも記載されていません。Alternatives To Git Submodule: Git Subtreesubtreeから詳細を学ぶことができます。


古い回答ですが、まだ有用な情報があります

アップストリーム リポジトリをリモートとして追加する

質問は少し不明確ですが、基本的には、GitHub でプロジェクトの会社のフォークを作成してオリジンとして機能させたいだけのように思えますが、元のリポジトリからコミットを取得したいのです。元のリモート ソース リポジトリに対して GitHub が使用する用語はupstreamリポジトリであり、任意のクローンに別のリモートとして追加できます。

git remote add upstream <url-of-original-repo>

次に、から変更をフェッチupstreamし、元のコミットとマージするか、その上で作業をリベースするか、その他やりたいことは何でも:

git fetch upstream
git checkout -b master origin/master
git merge upstream/master
git push origin master

GitHub ヘルプ ページの "Fork a Repo" には次のように記載されています (強調は私のものです)。

リポジトリがクローンされると、フォーク元の元のリポジトリではなく、GitHub 上のフォークを指すoriginと呼ばれるデフォルトのリモートがあります。元のリポジトリを追跡するには、次の名前の別のリモートを追加する必要がありますupstream

cd Spoon-Knife
git remote add upstream https://github.com/octocat/Spoon-Knife.git
git fetch upstream

プロジェクトをフォークした元のリポジトリが更新された場合は、次のコードを実行して、それらの更新をフォークに追加できます

# Fetches any new changes from the original repository
git fetch upstream
# Merges any changes fetched into your working files
git merge upstream/master
于 2013-08-15T02:25:20.610 に答える
1

git remote add myremote ssh@your.githost.com/repo新しいオリジンレポを追加します。

ただし、ライセンスによっては、変更したソースを公共の場所に提供せずに、会社で使用するためにソースを変更することはおそらく合法ではありません。複製する GitHub リポジトリのライセンスが GPL などの場合、最善の策は、GitHub でプロジェクトをフォークすることです。

于 2013-08-15T02:24:46.487 に答える