各種gitコマンドの私的メモ
インターンにてgitの勉強をしたのでコマンドをメモ。
init
-> リポジトリを作成する
$ git init
status
-> Gitの管理下にあるディレクトリの、ワークツリーとインデックスの状態を確認する
$ git status
diff
-> ステージングエリアに上げる前の状態のそれまでの変更履歴を確認する
$ git diff
$ git diff --cached
-> commitする前の状態のそれまでの変更履歴を確認する
log
-> リポジトリの変更履歴の確認
$ git log
$ git log --graph --color
-> グラフ表示になるので見やすい
$ git log --oneline
-> 全てを一行で表示してくれる
$ git log -p
-> 変更の履歴を確認できる
git log --stat
-> どのファイルが何箇所変更されたかの履歴を確認できる
add
-> 作業ディレクトリのファイルをインデックス(=ステージングエリア)に登録する
$ git add <file>
commit
-> ステージングエリアに上げられた更新内容をローカルリポジトリに登録する
$ git commit -m "<message>"
$ git commit --amend
-> 直前にしたコミットを無効にし、新たなコミットを作る。ログには記録されない。
reset HEAD
-> ステージングエリアをローカルリポジトリのHEAD状態に戻す
$ git reset HEAD <file>
$ git reset --hard HEAD
-> 直前のcommit状態に戻す
$ git reset --hard ORIG_HEAD
-> 前回取り消されたHEADの状態に戻る
rm
-> 作業ディレクトリとステージングエリアにあるファイルを削除する
$ git rm <file>
ブランチとは
「あるコミットとその親のコミットたちを含めた全てのコミット」のこと。
git管理を開始するとmasterブランチがデフォルトで用意される。
コミットした時点ではじめて枝分かれする。
$ git branch -a
-> ローカル、リモート両方のリポジトリにあるブランチ一覧を表示する
$ git branch <branch>
-> 新たにブランチを作る
$ git checkout <branch>
-> ブランチを切り替える
$ git checkout -b <branch>
-> ブランチを新たに作成して切り替える
$ git merge <branch>
-> 現在のブランチに指定ブランチを取り込む
$ git rebase <branch>
-> 現在のブランチを指定ブランチからリベースする
$ git branch -d <branch>
-> ブランチを削除する
merge / rebase
-> 2つのブランチを統合する
$ git merge <branch>
-> 現在いるブランチに対して別のブランチを統合する。自分が主体。
$ git rebase <branch>
-> 現在いるブランチを別のブランチに吸収させる。相手が主体。
fast-forwardマージとは
-> masterブランチが以前から変更されていない場合、bugfixブランチの履歴はmasterブランチの 履歴をすべて含んでいるため、masterブランチはbugfixブランチの内容を単純に取り込むだけであるため、簡単にマージを行うことができる。 masterブランチの履歴がbugfixブランチを分岐した時よりも進んでいる場合、masterブランチでの 変更内容と、bugfixブランチでの変更内容を一つにまとめる必要があるので、両方の変更内容を取り込んだマージコミットが新たに作成され、masterブランチの先頭はそのコミットに移動する。
tag
-> commitに対してタグ付けができる
$ git tag <tag名>
-> 直近のcommitに対してタグ付け
$ git tag <tag名> <ID>
-> 指定のcommitに対してタグ付け
$ git tag
-> タグ一覧を表示
$ git show <tag名>
-> タグの内容を表示
$ git tag -d <tag名>
-> 指定したタグを消去
stash
-> 作業を一時的に退避させたいときに使う
$ git stash save
-> 現在の作業を一時的に退避させる。saveは省略でき、saveの後に内容を表すメッセージを指定す ることもこともできる
$ git stash list
-> 退避した作業の一覧を表示する
$ git stash pop
-> 退避した作業を復元する。引数の指定がない場合、退避させた中で最新の作業を復元する。stashp {1}のように引数を指定することもできる。
$ git stash drop
-> 退避した作業を削除する。引数の指定がない場合、退避させた中で最新の作業を復元する。stashp {1}のように引数を指定することもできる。
$ git stash clear
-> 退避した作業を全て削除する
リモートリポジトリを使った作業コマンド
remote add
-> リモートリポジトリを登録
$ git remote add <repository name> <url>
push
-> ローカルリポジトリの更新内容をリモートリポジトリに登録する
$ git push -u <repository name> <refspec>
fetch
-> リモートリポジトリの内容をローカルリポジトリに取り込む。この時、mergeはせずに、名前の無 いブランチを生成する。このブランチはFETCH_HEADという名前でチェックアウトできる。
$ git fetch
fork
-> 他者の公開リポジトリを自分のリモートリポジトリにコピーする
$ git fork [url]
clone
-> 他者の公開リポジトリを自分のローカルリポジトリにコピーする
$ git clone [url]
pull
-> まず、リモートリポジトリの内容をローカルリポジトリに取り込み、次に、現在のローカルのブラ ンチに対して、それに対応するリモートのブランチをマージするコマンド
fetch + merge と考えるとわかりやすい
$ git pull <repository name> <refspec>
$ git pull --rebase <repository name> <refspec>
-> 通常はmergeだが上記のようにオプションを指定することでrebaseできる
pull Request について
-> 他者の公開リポジトリからforkし、変更した内容を反映するようリクエストする