
手を動かして覚える Git
Work in Progress な記事!内容は増えたり変わったりする。
目次
git add
次のコミットに投じたいファイルをステージして、Index に登録する作業。
git add [file | directory]
で追加する。 --help
オプションを付けると公式のマニュアルが立ち上がるやいなや、大量のオプションに対する解説があって辟易してしまうので、自分のような初心者は読者に寄り添うように書いてくれているGitHub による二次資料を読んで理解するのが良いかなと感じた。
変更点を確認しつつステージする
git add -p
でファイルに加えた変更点を確認しつつ、ステージすることができる。

git add -A するのは考えた方が良い
そもそも git add -A
は便利だけど、.gitignore
にリストされてないもの以外は容赦なくステージされてしまう点で、リスクも伴う作業としてとらえたほうが良い。1つずつ追加するのが一番安全だけど、もし使う場合はそれぞれを使い分けても良いかもね。
git add -A
- 同じ Git リポジトリにあるすべてのファイルをステージする
git add .
- 現在のフォルダ以下にあるファイルを再帰的にステージする
git add -u
- 変更や削除のあったファイルのみをステージし、新しく作成されたファイルは追加しない
https://github.com/git-guides/git-add#deciding-to-stage-all-files
git commit
HEAD 時点における、プロジェクトのスナップショットを作る。コミットするファイルやフォルダは git add
コマンドで追加されている必要がある。
git commit -m "a descriptive commit message"
–amend オプションを使ってコミットを改正
--amend
オプションを用いることで、リモートにプッシュしていないコミットに限って、直前に行ったコミット内容を修正したり、コミットメッセージを修正したりできる。
例えば、git add
でステージに追加し忘れてしまったといった軽微な問題であれば
- ミスったコミット後に忘れ去られたファイルを
add
-
git commit --amend --no-edit

こうすることで、コミットメッセージはそのままに、修正されたコミットを発行することができる。
そもそも論として、安全のためには
コミットする前には git status
を使って何がこれからコミットされるのか、知ってからコミットするべき。また、git-add
、git-rm
、git-commit
といった様々な場面で --dry-run
(もしくは -n
オプション )を活用できる。安全のためにこれを使って動作検証するのもおすすめ。
git revert
過去にコミットした履歴のデータを損なうことなく、ある時点における commit を取り消す。チームとかで開発したり、オープン性が求められるときはこっちを使った方が良いとされている。
git reset
機密情報をコミットしたり、コミットされるべきでないファイルをコミットしてしまったときなどに使えるコマンド。基本的には HEAD ポインターをある時点におけるコミットに移動して作業を行うことになる。
git add の undo は、git reset HEAD
にあたると言える。まだコミットしていない変更はそのままにして
いろいろなパターンがあるので紹介する。git reset --mixed HEAD
でもOK。
コミットを取り消す場合
git reset [--soft | --mixed] HEAD^
以下の例ではすべてのファイルを一旦ステージしてしまった後に .gitignore
を変更してしまった場合、上のコマンドが使える。(別にこれくらいであれば git add --amend
でもできるけど)

–soft と –mixed の違い
状況に応じて使い分けられると良い。
--soft
はステージ段階に戻す--mixed
はステージする前の段階まで戻す

すべてのファイルへの変更をなかったことにして戻す
git reset --hard HEAD^
コミットしていない変更は全て水の泡になる作業。^
は現在のコミット位置より1個前のコミットを指す位置指定子。HEAD^
のようにして使用する。つまり、上のコマンドは一個前のコミットにリセットするということになる。
※HEAD
: 現在のコミット位置。
git checkout
もうちょっと詳しく書くよ~ん
git log
過去のコミットを閲覧する。
git log --graph --oneline
--oneline
オプションを使うと一行に表示できる。
