git基本コマンド
最近、将来的に必要になるであろうgitの勉強している。
だが、pushやpullやらプルリクやらよく迷うので
代表的なコマンドを復習ついでに簡単にまとめて残しておく
初期化コマンドと必須コマンド
git init
:リポジトリの初期化
リモートからクローンする場合は必要ないから案外使わないかも
git add
:インデックスにファイルを追加
gitリポジトリのワーキングツリーでファイルを追加しただけでは、
gitリポジトリの管理対象にはなっていない。つまり、commitできない。
commitするためにも、先に必要。
git add filename
とすれば、指定したファイルを追加するが、
git add .
とすれば、全部指定できるので便利。
git commit
:リポジトリの歴史を記録
-mオプションをつけてそのあとに "comment" とすれば
commentがコミットメッセージとなる。
なければ、エディタが起動してコメントを書くことになる。
--amendオプションで直前のコミットのコミットメッセージを修正できる。
git remote add
:リモートレポジトリを登録
例:git remote add origin https://github.com/userA/x-project.git
とすれば、userAのx−projectのリポジトリをリモートリポジトリとして保存する
(cloneしてきたときは、自動でoriginに追加されているらしい)
アドレス間違えた時は、git remote set-url origin [url]
で登録し直す
git push
:リモートリポジトリに送信
例:git push -u origin master
とすれば、originリポジトリのmasterブランチに現在のブランチの内容を保存する。
違うブランチをpushするには、最後にスペースをあけずに:[branch名]
を追加。
-uオプションで、今後git pullで、origin/masterから内容を取得できる。
git pull
:最新のリモートリポジトリを取得
例:git pull origin branchA
とすれば、リモートリポジトリのoriginからbranchAの情報を最新に更新
開発を始める前に更新がないか確認しとかなければ、後々面倒くさいことなったり
するので大事なコマンド
必須ではないけど大事なコマンド
git status
:現在の状態を確認
commit後にこれを実行して「nothing to commit, working directory clean」と出れば
だいたいうまくいっている。絶対必要な操作ではないが、確認は大事。
git log
:コミットログを確認
リポジトリにコミットされたログを確認。
ファイルやディレクトリを指定すれば、それに関するログを確認できる。
-pオプションで差分を確認できる。これも絶対必要な操作ではないがってやつ。
--graphオプションでブランチを視覚的に確認する。
git diff
:変更差分を確認
ワークツリー、インデックス、最新コミット間の差分を確認できる。
何も指定しなければワークツリーとインデックスの差分、
HEADと指定すればワークツリーと最新コミットとの差分、
がそれぞれわかる。
commitする前に、差分を確認する癖はつけたほうがいいらしい。
git branch
:ブランチを一覧表示
新しいブランチ名を指定すれば、その名前のブランチを作成できる
git checkout
:ブランチの切り替え
ブランチを指定して切り替える。
-bオプションで新規のブランチを作成して、それに切り替える。
-のみで1つ前のブランチに戻れる。
git merge
:ブランチをマージする
指定したブランチを、現在のブランチにマージする。
--no--ffオプションで、マージコミットを作成できる
(ブランチからマージしたことを明確に残せる)。
8/1追記:このオプションないって言われた。要調査。
git reset
:歴史を戻る
タイムマシンではない。
--hardオプションに、戻りたい場所のハッシュ値を与えることでそこに戻れる。
ハッシュ値はgit log
やgit reflog
で参照できる。
git rebase -i
:歴史を押しつぶして改変
コミット後に些細なミスを発見し、それを修正したコミットをする時とかに使う。
例えばHEAD~2
とすると、現在のブランチ(HEAD)を含めた2つの歴史を
対象として改ざんする。
この時、エディタが立ち上がるが押しつぶす歴史のpickの記述をfixupに変える。
この操作は怖い気がするのだが、どうなんだろう