GitHub で公開されているものをプロジェクトに使用する必要があり、project A
GitHub にチェックインできないいくつかの変更があり、元の作成者の作業を台無しにしますが、作成者の更新を私の会社にプルダウンする必要があります。
サテライト 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
git remote add myremote ssh@your.githost.com/repo
新しいオリジンレポを追加します。
ただし、ライセンスによっては、変更したソースを公共の場所に提供せずに、会社で使用するためにソースを変更することはおそらく合法ではありません。複製する GitHub リポジトリのライセンスが GPL などの場合、最善の策は、GitHub でプロジェクトをフォークすることです。