Git remoteとは?
remoteは、GitHubなど別の場所にホストされたリポジトリのコピーへの名前付き参照で、そこへpushしfetchします。
remoteは、ローカルのGitリポジトリが共有のリポジトリと対話する手段です。それはoriginのような名前とURLの組にすぎません。他の人やCIが見られるよう、commitをremoteへpushし、他の全員の作業を取り込むためにremoteからfetchします。
remoteとは何か
remoteは、リポジトリの別のコピーへのブックマークで、短い名前とURLで識別されます。複数のremoteを持てます。たとえば正規のプロジェクト用に1つ、自分のfork用にもう1つといった具合です。remote-tracking branchはそれらのコピーの状態をローカルにミラーします。
remoteの扱い
remoteを一覧表示し、追加し、確認し、それから名前でpushやfetchを行えます。
git remote -v
git remote add upstream https://github.com/owner/project.git
git fetch upstreampushとfetch
pushはローカルのcommitをremoteへ送ります。fetchは作業ファイルを変えずにremoteから新しいcommitをダウンロードします。pullはfetchとmergeの組み合わせです。これらの操作を通じて、チームはremoteを介して共有された履歴へ収束します。
CI/CDにおけるremote
remoteは、CI/CDシステムが監視するsource of truthです。remoteのbranchへのpushがpipelineをトリガーし、CIのrunnerはremoteからcloneして、pushされた正確なcommitをbuildします。Latchkeyのようなmanaged runnerプラットフォームは各jobの開始時にremoteリポジトリをチェックアウトするため、高速で信頼できるcloneがpipelineを機敏に保ちます。
よくあるremoteの作業
- cloneした元のリポジトリにはoriginを使う。
- forkから作業するときはupstreamのremoteを追加する。
- 作業を始める前にfetchして最新の履歴を確認する。
- CIとレビュアーが見られるようfeature branchをpushする。
重要なポイント
- remoteは、リポジトリの別のコピーへの名前付きURLです。
- push、fetch、pullは、ローカルとremoteの間でcommitを移動します。
- CIはremoteを監視し、それをcloneしてpushされたcommitをbuildします。