背景
完全独学で触ってきたgitですが、流石に体系的に勉強した方がいいだろうと思って、勉強しました。
そこで学んだ便利なコマンドを記載していきます。なお、gitを使っている方々にとっては当たり前の内容となっております。
完全に個人的な備忘録です。
ちなみに勉強した本はGitHub実践入門です。まだ読み途中なので、読み終えたら追記もしくは別記事で投稿します。
コマンド集
コミットメッセージ
いきなりコマンドではなくてすみません笑。コミットメッセージには、フォーマットがあるらしく、それに則った方が今後便利だなと思いました。
1行目: コミット内容のようやく
2行目: 空白行
3行目以降: コミット内容の詳細内容や背景など
過去のコミットメッセージ1行目のみ表示
git log --pretty=short
ファイルの差分表示
git log -p [file name]
ワークツリーとステージ領域の差分確認
git diff
ワークツリーと最新コミット領域の差分確認
変更したファイルを全てステージ領域に追加すると、 git diff
では何も差分が表示されなくなる。
最新コミットと比較したい時には、下記のようなコマンドを実行する。
git diff head
ブランチの流れを視覚的に表示
git log --graph
新しいブランチを作成し、そちらに切り替える
git checkout -b [branch name]
現在のリポジトリでの作業ログ
git reflog
ブランチを戻す
git reset --hard [hash value]
*ハッシュ値については、 git log --graph
や git reflog
などを使って確認すること
*戻した後に、 git reflog
などを使ってハッシュ値を取得できれば、再度戻す前の状態にも戻れる。
ブランチのマージ(及びコンフリクトの確認)
マージ先のブランチ(例えば、masterブランチ)にいる状態で実行する。
git merge [branch name]
*事前にマージ元、マージ先のgit pull origin [branch name]などをしておき、ブランチを最新化しておく。
*コンフリクトが起きたら、対象ファイルを開き、修正して再度ステージング及びコミットする
直前のコミットメッセージを修正
git commit --amend
複数コミットをまとめる
直前2つのコミットをまとめたい場合
git rebase -i head-2
*ここのheadは最新コミットを指す。
pick [hash value] [commit message1] # 最新の1つ手前のコミット
pick [hash value] [commit message2] # 最新コミット
最新コミットの方のpickをfixupに書き換えることで、
1つ手前のコミットにまとめることができる。
コミット後に見つけた軽微なバグ修正などで使う。
なお、改竄方法はgit rebaseコマンド実行時に表示されているので、そちらを読むことでより理解できるだろう。
リモートリポジトリの登録
git remote add origin git@github.com:hoge/huga.git
*originという識別子は今後、git@~として認識されるようになる。
*なお、push時に-uオプションを付けることで上流ブランチとして登録させることができる
例、 git push -u origin master
ちなみに上の例は、origin(リモートリポジトリ)のmasterブランチにpushしているという意味。
masterの部分を別のブランチ名にすると、そのブランチにpushされる。
そのブランチが存在しない場合は、作成される。
リモートリポジトリを含めたブランチの確認
git branch -a
- master
remotes/origin/master
リポジトリにもよるが、おそらく上記のように表示される。
上記では、ローカルリポジトリのmasterブランチにいて、リモートリポジトリにはmasterブランチのみが存在しているという意味。
remotesが(ローカルではなく)リモートリポジトリを指しており、originは先ほど指定した特定のリモートリポジトリを指している。
リモートリポジトリのブランチをチェックアウトする
リモートリポジトリにあるブランチを元に手元のローカルリポジトリにブランチを作成する
git checkout -b develop origin/develop
*リモートリポジトリにdevelopブランチがある前提
最新のリモートリポジトリの情報をローカルリポジトリに反映
例えば、別の開発者によってリモートリポジトリに変更が生じた場合、下記コマンドでそれをローカルリポジトリにも反映させる。
git pull
# もしくは
git pull origin develop # originのdevelopの変更をローカルに反映
リモートリポジトリのブランチが変更されていた場合、このコマンドでローカルリポジトリにもその変更が反映される。
なお、変更がかぶっていた場合、コンフリクトが発生する。
直前のコミットまでワークツリーを戻す
これで何かやらかしても直前まで簡単に戻せる。
git reset --hard HEAD
ローカルブランチの削除
整理のためにも不要になったローカルブランチは削除しておきたい。
git branch -d [branch name]
対象ブランチをローカルでチェックアウトしている状況ではエラーが発生するので、別ブランチにチェックアウトしておくこと。