gotagota日記

「面白きことは良きことなり」

各種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し、変更した内容を反映するようリクエストする