リモートからの情報取得
リモートの表示
git remote
対応するURLを表示
git remote -v
fetch用、push用で2つ出てくる
リモート詳細情報を表示
git remote show <リモート名>
git remote show origin
リモートリポジトリの追加
最初のリモートリポジトリを作るのと同じ動き
リモートリポジトリは複数登録できる
git remote add <リモートリポジトリ名> <リモートリポジトリURL>
このコマンドの本質は、URLにエイリアスをつけること。Gitコマンドの中で、リモートリポジトリ名でURLにアクセスできるようにしているだけ
リモートからの情報取得(フェッチ、プル)
「他人が加えた変更をローカルに持ってくる」という場面
フェッチ("取り出す")
リモートリポジトリからローカルリポジトリに情報を持ってくる
自分の手元(ワークツリー)に持ってくるわけ ではない
ローカルリポジトリ remotes/<リモート名>/<ブランチ名>
という場所に保存される
git fetch <リモートリポジトリ名>
例:リモートリポジトリだけに変更を加えるため、GitHubからhome.indexというファイルを追加してみる。
git fetch origin
で、リモートリポジトリの情報をローカルリポジトリのremotes/origin/masterに保存する
この時点では、ローカルリポジトリ/masterには何の変更もない。
ただremotes/origin/masterという所定の場所にリモートリポジトリの情報を持ってきただけ。
内容を確認するには、ブランチを切り替える必要がある。
git checkout origin/master
lsしてみると、GitHub上で追加したファイルが表示されている。
いったんローカルリポジトリに戻る(git checkout master
)
フェッチしてきた情報をワークツリーに、反映させるにはマージ(統合)を行う必要がある
git merge origin/master
「ローカルリポジトリに保存した、originリモートのmasterブランチ情報を、現在いるブランチ(この場合はローカルのmaster)に統合する」
(リモートリポジトリから直接持ってきているわけではなくフェッチによってローカルリポジトリに保存した情報を使うため、
git merge origin master
ではなく、git merge origin/master
となる。)
lsしてみると、GitHub上で追加したファイルがmasterにも反映されている。
フェッチとマージを一気にやりたいときは、プル
git pull <リモート名> <ブランチ名>
※ git pull origin master
については、git pull
と省略できる
git fetch origin master
+ git merge origin/master
= git pull origin master
= 「指定したリモートリポジトリからローカルリポジトリに情報を持ってきて、現在いるブランチをその情報で上書きする」
???フェッチとプルの使い分け
プルの注意点
ローカルの統合先は、あくまでも現在自分がいるブランチ**(同じ名前のブランチ、とかではない)
慣れるまでは、フェッチ + マージ がよい。
リモート名の変更・削除
変更
git remote <旧リモート名> <新リモート名>
git remote rename tutorial new_tutorial
削除
git remote rm <リモート名>
rm => "remove"
リモートリポジトリそのものが削除されるわけではない
(GitHubには表示されている)