【一年生の頃の私へつづる言葉⑧】気づいて。私はGitの本領をこれっぽちも引き出せていないことに。

・今となっては、当然のごとく使用していることを、ただ手紙としてしたためるだけの記事の第八弾。

・昨今重要視されている「効率的」「論理的」「現実的」から逃避して、ひたすら時間跳躍ごっこという幻想世界での生活を貫いている。

・正当化するために無理矢理、「備忘録としても役立つ」とかの長所を捻りだして対応するが、ただ私はこの「おとぎ物語」の主人公になりたいだけ。

・よし。今回は入社後、知っておけばよかったことを書こう。


Gitコマンドについて


<当時>


  • 「使用コマンド」・・・作成(init)からプッシュ(push)までの基本手順や、基本ブランチ操作(作成や切り替え)くらいしか、使うことがなかった。

    ※そのため、それ以外は知らなかった。

※またVSCodeでのGUI操作で主に使用していたため、コマンド操作はあまり行わなかった。


<現在>

こちらの記事を参考にしながら、担当内容部分の機能はもちろんのこと、それ以外の機能の学習として整理。

・覚えるためにGUI操作ではなく、極力コマンド操作で対応。

・下記、現状最低限覚えておく一覧(※これ以外にもまだ、Gitにはたくさんのコマンドやオプションがある。)


コマンド一覧


1. 情報(名前、メールアドレス追加)

$ git config --global user.name "ユーザー名"

$ git config --global user.email "メールアドレス"


2. 設定情報一覧

$ git config --list


3. Git管理対象下にいれる(初期化)

$ git init


4. 変更ファイルをGit管理下に追加(ステージング)

・全て追加。

$ git add .

・変更分全て追加。

$ git add -u

・ファイル指定追加。

$ git add index.html

・拡張子指定追加。

$ git add *.html

・対話形式追加。

$ git add -i


5. コミット

・ステージング分全て。

$ git commit -a

・メッセージありでステージング分全て。

$ git commit -a -m "First commit"

・指定ファイル名。

$ git commit index.html


6. コミット関連各種操作

・直前のコミットメッセージ変更

$ git commit --amend

・直前のコミット取り消し(ローカルディレクトリの内容変更無し。)

$ git reset --soft HEAD^

・直前のコミット取り消し(ローカルディレクトリの内容変更)

$ git reset --hard HEAD^

・直前のコミットから2個分を取り消し(ローカルディレクトリの内容変更無し。)

$ git reset --soft HEAD~2

・コミットのタグ作成。(注釈無し)

$ git tag "タグ名"

・コミットのタグ作成(注釈有り)

$ git tag -a "タグ名" -m "注釈分"

・コミットタグ一覧確認

$ git tag


7. リモート接続(GitHub使用)

・リモートリポジトリ接続

$ git remote add origin https://github.com/abcdef/ghi.git

・リモート接続先確認

$ git remote -v

・リモート接続変更

$ git remote set-url origin https://github.com/bbbbb/ccccc.git


8. プッシュ

・カレント(現在作業中)ブランチをリモートの同名ブランチにプッシュ。

$ git push origin ブランチ名

・カレント(現在作業中)ブランチをリモートの同名ブランチにプッシュ。(※便利)

$ git push origin HEAD

・「u」オプション追加で、ブランチを追跡対象にいれる。

$ git push -u origin master

・「f」オプション追加で、強制プッシュ。

$ git push -f origin master


9. クローン

・リモートからローカルへ持ってくる(クローン)。

$ git clone http://abcdef.com/ghijk.git

・ブランチを指定して、クローンしてくる。(タグ指定も同様。)

$ git clone -b ブランチ名 http://abcdef.com/ghijk.git


9. 変更取得

・リモートから変更点を取得して、反映。(fetchとmergeを同時に行う。)

$ git pull

・リモートから変更点を取得するのみ。反映はしない。

$ git fetch

・取得した変更点を反映する

$ git merge FETCH_HEAD

・取得した変更点を反映する(ブランチ指定)

$ git merge ブランチ名


10. 変更状態確認

・変更状態の確認

$ git status


11. 差分確認

・インデックス(ステージング領域)の変更点比較をする。

$ git diff

・直前コミットの比較をする。

$ git diff HEAD

・直前コミットとインデックスの比較。

$ git diff --cached HEAD

・コミット同士の比較をする。

$ git diff 比較元のコミット 比較先のコミット


12. ブランチ操作

・ブランチ状態確認。

$ git branch

・新しいブランチ作成

$ git branch ブランチ名

・ブランチ切り替え

$ git checkout ブランチ名

・ブランチ作成と切り替えを同時に行う。

$ git checkout -b ブランチ名

・ブランチ名の変更

$ git branch -m 旧ブランチ名 新ブランチ名

・ブランチの削除

$ git branch -d ブランチ名


13. リベース(整理)

・分岐元ブランチから分岐先ブランチへ反映。(※実行は分岐先のブランチ2で行う。)

$ git rebase 分岐元ブランチ


14. スタッシュ(退避)

・現在の作業を一時的に退避。

$ git stash save

・退避作業の一覧表示

$ git stash list

・退避作業の復元

$ git stash pop

・退避作業の削除

$ git stash drop

・退避作業の全削除

$ git stash clear


15. 検索

・単純検索

$ git grep 検索単語

・引数指定検索

$ git grep -e 検索単語

・複数単語検索(AND検索)

$ git grep -e 検索単語1 --and -e 検索単語2


16. ブレーム(特定)

・行ごとのコミッター表示。

$ git blame ファイル名

・ブランチを指定して、クローンしてくる。(タグ指定も同様。)

$ git clone -b ブランチ名 http://abcdef.com/ghijk.git


17. 掃除

・不要なオブジェクト(2週間以上経過のもの)を削除して、最適化。

$ git gc

・不要なオブジェクト(全て)を削除して、より強力に最適化。(※頻繁には行わない。)

$ git gc [--prune=all] [--aggressive]


まとめ


  • 今回は、Gitコマンドということで、バージョン管理の真髄を味わうことなく、基本操作で満足している頃を思い出しながら、記事を書く。

  • ここまでの膨大なコマンドがあっても、Gitの能力の半分も引き出せていないという事実を、過去の私が知ったときの、きらめきに満ちた消沈表情を拝みたいと切に願う。

  • ということで、より一層の表情筋向上のため、他にも便利なコマンドを覚えて、送りつけることにしよう。


参考