Git – リモート – clone/push/pull/fetch

clone~リモートリポジトリーをローカルに複製

コマンド形式

git cloneはリモートリポジトリーの複製をローカルリポジトリーとして作成する。パスワード認証、SSH認証に対するコマンド形式は以下の通り。

パスワード認証

git clone https://github.com/account/remote_rep [local_rep]
SSH認証
git clone git@github.com:account/remote_rep.git [local_rep]
  • local_repを省略するとremote_repと同じ名前でディレクトリーが作成され、ローカルリポジトリーに設定される
  • パスワード認証はログインパスワードが非推奨になり、2段階認証化が必要
  • SSH認証の場合は別途キーセットの生成・登録などが必要

実行例

  • あらかじめリモートリポジトリーexampleを作成しておく
  • user1ディレクトリーを作成し、そこにexampleリポジトリーをクローン

push~ローカルのコミットをリモートに反映

コマンド形式

ローカルリポジトリー内でgit pushを実行すると、ローカルでのコミットをリモートに反映

git push

実行例

user1でcloneしたローカルリポジトリーのでファイルを作成・コミット。

コミット結果のログ。

コミット結果をリモートにプッシュ。

GitHub上で作成されたファイルが確認できる。

cloneはその時点でのリモート内容を複製

user2ディレクトリーを作成してexampleをクローン。

user1が作成したファイルが反映される。

リモートへのpushはfast-forward

user2ファイル作成・コミット。

コミット結果のログ。

user2のコミット結果をプッシュ。リモート上でfast-forwardでマージされる。この間にリモートで他のコミットが行われているとpushできない。

リモートリポジトリーからのpull

user1でリモートのexampleをプル。リモートの内容がfast-forwardでローカルリポジトリーにマージされる。

この時点までの変更(user2でのファイル作成)が反映されている。

ログも最新状態になる。

pullの後のコミットとpush

user1でファイルを変更、コミット。

コミット後のログ。

user1のローカルリポジトリーからリモートにpush

fetch~一時的なリモートの内容確認

フェッチの確認

user2git fetchを実行。

フェッチを実行した結果。

  • フェッチした場合はローカルリポジトリーにマージされず、FETCH_HEADブランチに複製される
  • FETCH_HEADは不可視でgit branchでは確認できないが、git checkoutで移動することができる
  • FETCH_HEADで変更・コミットした内容は最終的に破棄される
  • 破棄したくない場合はgit switch -cで新たなブランチを作成できる
  • この操作はgit switch -cで取り消せる

FERCH_HEADブランチのログ。

フェッチ内容の反映 = pull

FETCH_HEADがある状態でmainブランチに移動。

FETCH_HEADブランチをマージ。

FETCH_HEADで変更していなければ、結果は直接pullを実行したときと同じ。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です