MinEMemO

【Git/GitHub】知ってたら便利系のコマンド

📝 更新日:2023-07-17 / 📄 作成日:2023-07-17
Hero Image
目次

はじめに

取り消したり、戻したり、確認したりなどの知ってたら便利なコマンドをざっと記載します。

git管理addの状態確認

git_command

git status

※編集中でaddされてないファイルは赤文字で表示される
※addされているファイルは緑色で表示される

ファイルの変更内容を確認

git_command

#git addする前の変更分を表示(ワークツリーとステージ)
git diff

#git add した後の確認(ステージとリポジトリ)
#ネットでは git diff –cached のほうがよく出てくるが出力結果は同じでした
git diff --staged

コミットメッセージの複数行

git_command

git commit -m "1行目" -m "2行目"

コメント、変更履歴を確認

git_command

git log

直前のコミットを打ち消すコミット

git_command

git revert

※git revert HEADと同じで=一個前(HEAD^)の状態に戻る
※不用意な履歴が増えるのだけが懸念だが、成れないうちはこれが無難

誤pushをとりけしたい

git_command

git revert

↓

git push

怖い時は間違ってpushしたのですが、どうしたらいいか。とチームメンバーに相談するのが良さそうです。

ブランチ作成+切り替え

git_command

git swicth -c ブランチ名
#ブランチを新規作成して切り替える

ブランチ確認

git_command

git branch
#ブランチ一覧と緑文字で今いるブランチが表示される

git branch -a 
#-a でリモート側も含めたブランチを表示する

git branch ブランチ名
#ブランチ名指定でブランチ作成ができる

ローカルファイルを編集変更した後に、変更前の最終コミットの状態までローカルのファイルを戻したい

git_command

git reset --hard HEAD

プッシュ前のコミットに対してのみつかわないと履歴が崩れるので危ないらしい
※HEAD^ はひとつ前のコミットまで戻すという意味。二つ前ならHEAD^^となる(~は^と同じ意味)
※HEADなら現在作業中のHEADになる

  • soft コミットだけ取り消し
  • mixed コミットとaddを取り消し
  • hard コミット、add、フォルダのファイルも取り消し

コミットしていない編集状態を消したり、戻したり

Ctrl+ZやCtrl+Shift+Zで直前の状態を消したり、戻したりする感覚で状態を操作できる。
この操作で消したりした内容はメモリに確保される。

例えば、違うブランチで作業してしまい、その内容を戻し、別のブランチのファイルにその内容を反映するみたいなことができる

git_command

git stash	
#内容をもとに戻す(消してメモリに確保)

git stash pop
#消した内容を反映する

commitされる前に戻す

git_command

git restore -s HEAD^ ファイル名

git pullされる前に戻す

git_command

##ログ確認
git reflog

##例)ログの二行目に戻す場合は{1}を指定する
git reset --hard HEAD@{1}

git configのスコープ

git_command

$ git config --local ...   # 各リポジトリごとの設定 (.git/config)(優先度:高)

$ git config --global ...  # 現在のユーザの共通設定 (~/.gitconfig)

$ git config --system ...  # システム内の共通設定 (/etc/gitconfig など)(優先度:低)

さいごに

よく使うのだけしか結局覚えれないし、覚えなくてOK
profile_icon
taka
プログラマー
いつでも転職希望の業務経験7年目(2023時点)のエンジニアです。 仕事の合間にすこしずつ転職活動はしていますが、条件が合う場合ぜひTwitterなどでご連絡頂けると嬉しいです。 希望条件は基本的に残業は1日x1h程度。収入は一旦現状維持。 ある程度で構わないので、保守運用が管理されていて、精神的に安心して働ける環境が良いです。 経験言語はHTML、CSS、javascript、PHP、MySQL、Docker、Vuejs、Laravel このブログは完全に自作で静的ジェネレータで作りました。 この範囲で言えば React.js Gatsby.js GraphQLも経験があります。 最近はAIがどう社会に受け入れられ、日常になっていくのかの行く末が気になっています。 今までの人生で一番変化を感じて不思議な感覚です。