はじめに
gitのコマンドを学んだので簡単にまとめていきます。
基本コマンド
まずはgitの基礎的なコマンドから書いていきます。
git init
ローカルリポジトリの新規作成するコマンド
$ git init
.gitディレクトリ作成される
.gitディレクトリの中身は以下のファイル
・リポジトリ
・圧縮ファイル
・ツーリーファイル
・コミットファイル
・インデックスファイル
・設定ファイル
git clone
リポジトリのコピーを作成するコマンド
git clone <リポジトリ名>(URL)
# hogeリポジトリのコピー作成
$ git clone https://github.com/hoge/hoge.git
他の人が作成したgithub上にあるプロジェクトから始める際に使う
git add
変更をステージに追加するコマンド
git add <ファイル名・ディレクトリ名>
# hogeファイルの変更をステージに追加する
$ git add hoge
# 変更全てをステージに追加
$ git add .
git commit
変更を記録する(コミットする)コマンド
$ git commit
-mオプションでコミットメッセージつけることができる
# "first commit"とメッセージつけてコミットする
$ git commit -m "first commit"
git status
現在の変更状態を確認するコマンド
$ git status
ワークツリー、ステージの変更されたファイルを確認する際に使う
git diff
変更差分を確認するコマンド
git diff <ファイル名>
# git addする前の変更差分確認
$ git diff
# git addした後の変更差分確認
$ git diff --staged
git addする前=ワークツリーとステージの変更差分
git addした後=ステージとリポジトリの変更差分
git log
変更履歴を確認するコマンド
$ git log
# commitのハッシュ値(IDみたいなもの)、作成者、日時、コミットメッセージ表示される
オプション | 内容 |
---|---|
--oneline | 一行で表示する |
-p | ファイルの変更差分を表示する |
-n <コミット数> | 表示するコミット数を制限する |
# 一行で表示する
$ git log --oneline
# hoge.htmlファイルの変更差分表示する
$ git log -p hoge.html
# 最新から三つ目までのコミット表示する
$ git log -n 3
## git rm
ファイルの記録を削除するコマンド
git rm <ファイル名>
# hoge.htmlを削除する
$ git rm hoge.html
# ディレクトリ削除する場合 -rオプション
$ git rm -r <ディレクトリ名>
# ワークツリーにファイル残して、gitの記録から削除したい時
$ git rm --cached <ファイル名>
git mv
ファイルの移動を記録するコマンド
git mv <旧ファイル名><新ファイル名>
# hoge.html→hoge2.htmlにファイル名変更する
$ git mv hoge.html hoge2.html
git push
リモートリポジトリ(GitHub)へ送信するコマンド
git push <リモート名> <ブランチ名>
$ git push origin master
ローカルリポジトリの内容をリモートリポジトリに送ることをプッシュという
変更を元に戻すコマンド
次はファイルやディレクトリなどの変更を元に戻すコマンド書いていきます。
git checkout --
ファイルへの変更を取り消すコマンド
git checkout -- <ファイル名・ディレクトリ名>
# hoge.htmlの変更取り消す
$ git checkout -- hoge.html
# 全変更を取り消す
$ git checkout -- .
git reset HEAD
ステージした変更を取り消すコマンド
git reset HEAD <ファイル名> <ディレクトリ名>
# ステージしたhoge.htmlの変更取り消す
$ git reset HEAD hoge.html
# 全変更を取り消す
$ git reset HEAD .
変更内容をステージから取り消すだけなのでワークツリーのファイルには影響がない
git commit --amend
直前のコミットをやり直すコマンド
$ git commit --amend
pushしたコミットはやり直しNG
GitHubとのやり取りするコマンド
次はGitHubとのやり取りに関するコマンドです。
git remote add
リモートリポジトリ(GitHub)を新規追加するコマンド
git remote add origin <URL>
$ git remote add origin https://github.com/user/hoge.git
originというショートカットを使うことで次からoriginという名前リモートリポジトリから習得したり、アップしたりできるようになる
git remote
リモートリポジトリの情報を表示するコマンド
$ git remote
# URLも表示する
$ git remote -v
git fetch
リモートから情報を取得するコマンド
git fetch <リモート名>
# originの情報取得する(フェッチ)
$ git fetch origin
git pull
リモートから情報取得してマージするコマンド(プル)
git pull <リモート名> <ブランチ名>
$ git pull origin master
git pullコマンドは以下のコマンドと同じことをしている
git fetch origin master
git merge origin/master
git remote show
リモートの詳細情報を表示するコマンド
git remote show <リモート名>
$ git remote show origin
git remoteより詳しい情報を表示する
・fetchとpushのURL
・リモートブランチ
・git pullの挙動
・git pushの挙動
git remote rename
リモート名変更するコマンド
git remote rename <旧リモート名> <新リモート名>
$ git remote rename hoge new_hoge
git remote rm
リモート削除するコマンド
git remote rm <リモート名>
$ git remote rm hoge
ブランチとマージのコマンド
次はブランチとマージに関するコマンドです。
git branch
ブランチを新規追加する・一覧表示する・ブランチ名変更する・削除するコマンド
新規追加
git branch <ブランチ名>
$ git branch hoge
一覧表示
git branch
$ git branch
# 全てのブランチを表示する
$ git branch -a
ブランチ名変更
git branch -m <ブランチ名>
$ git branch -m hoge
現在自分が作業しているブランチの名前を変更する
削除する
git branch -d <ブランチ名>
$ git branch -d hoge
# 強制的に削除する
$ git branch -D <ブランチ名>
git checkout
上でもgit checkout -- ファイルの変更を取り消すコマンドで出てきましたが
ここではブランチを切り替えるコマンドです。
git checkout <既存ブランチ名>
$ git checkout hoge
# ブランチを新規作成して切り替える
$ git checkout -b <新ブランチ名>
git merge
変更履歴をマージ(統合)するコマンド
git merge <リモート名/ブランチ名>
$ git merge origin/master
git rebase
履歴を整えた形で変更を統合する
git rebase <ブランチ名>
$ git rebase hoge
複数のコミットをやり直す時
$ git rebase -i HEAD~3
pick ge689je ファイル1修正
pick oi2313o README修正
pick 457ir09 ヘッダー修正
# やり直したいコミットをeditに変更
edit ge689je ファイル1修正
pick oi2313o README修正
pick 457ir09 ヘッダー修正
# やり直したら実行する
$ git commit --amend
# 次のコミットに進む (リベース完了)
$ git rebase --continue
コミットを並び替える、削除する
$ git rebase -i HEAD~3
pick ge689je ファイル1修正
pick oi2313o README修正
pick 457ir09 ヘッダー修正
# ①457ir09のコミット 削除する
# ②oi2313oを先に適応する
pick oi2313o README修正
edit ge689je ファイル1修正
コミットをまとめる
$ git rebase -i HEAD~3
pick ge689je ファイル1修正
pick oi2313o README修正
pick 457ir09 ヘッダー修正
# コミット一つにまとめる
pick ge689je ファイル1修正
squash oi2313o README修正
squash 457ir09 ヘッダー修正
squashを指定することで直前のコミットと一つにする
git pull --rebase
プルのリベース型
マージコミット残さずGitHubの内容だけ取得したい時に使う
git pull --rebase <リモート名> <ブランチ名>
$ git pull --rebase origin master
スタッシュのコマンド
最後にスタッシュのコマンドについて書いていきます。
git stash
作業を一時避難するコマンド
$ git stash
git stash list
避難している作業を確認するコマンド
$ git stash list
git stash apply
避難した作業を復元するコマンド
$ git stash apply
# ステージの状況も復元する
$ git stash apply --index
# 特定の作業を復元する
$ git stash apply stash@{1}
git stash drop
避難した作業を削除するコマンド
$ git stash drop
# 特定の作業を削除する
$ git stash drop stash@{1}
# 全作業を削除する
$ git stash clear
おわりに
git, GitHubは必ず使うものなのでコマンドを繰り返し使い、しっかり覚えていきたいと思います。
もし間違いや改善点などありましたらご指摘お願いいたします。