1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

入社1年でやらかしながら覚えたGit/GitHubの使い方メモ

1
Posted at

入社1年でやらかしながら覚えたGit/GitHubの使い方メモ

はじめに

エンジニア2年目です。1年目のときにGitで何回かやらかして(mainに直push、reset --hardで作業消失など)、その度に先輩に助けてもらいながら覚えたことをまとめます。

当時の自分が読みたかった記事を目指して書くので、同じく「Gitなんとなく使ってるけど怖い」という人の参考になれば嬉しいです。

まずこれだけ覚えれば生きていける

正直、日常の9割はこれです。

git status   # 迷ったらとりあえずこれ。1日50回くらい打ってる
git add .
git commit -m "メッセージ"
git push
git pull

git status は本当に癖にした方がいいです。自分は「今どのブランチにいるか確認せずcommitしてmainを汚す」を2回やりました。

ブランチまわり

mainで直接作業しない、はチーム開発の鉄則でした(1敗)。

git switch -c feature/login   # ブランチ作って移動
git switch main               # mainに戻る
git branch                    # 一覧

ちなみに自分はずっと git checkout -b で覚えてたんですが、先輩に「今は switchrestore に分かれてるよ」と教えてもらいました。checkoutは多機能すぎて事故りやすいので、これから覚える人はswitchがいいと思います。

やらかしたとき用コマンド

ここからが本題です。全部実体験あります。

commitメッセージをtypoした

git commit --amend -m "正しいメッセージ"

push前ならこれでOK。あと「add忘れたファイルがあった」ときも、

git add 忘れたファイル
git commit --amend --no-edit

で直前のコミットに混ぜられます。これ知ってから「fix: add忘れ」みたいな恥ずかしいコミットが消えました。

commitを取り消したい

git reset --soft HEAD~1   # push前。変更は残る
git revert コミットID      # push後はこっち

push済みのものを reset して force push すると他の人の環境が壊れるので、push後は revert 一択です。これは先輩に口を酸っぱくして言われました。

作業途中で別ブランチを触る必要が出た

git stash       # 一時退避
git stash pop   # 戻す

「急ぎでこっちのバグ見て」って言われたときの必須コマンド。最初の頃はわざわざWIPコミットを作ってました…。

全部消えた(ように見える)

git reflog

これは本当に命を救われたコマンドです。reset --hard を間違ったコミットに対してやってしまい、半日分の作業が消えて青ざめたんですが、reflogでHEADの履歴を見て

git reset --hard HEAD@{2}

で戻せました。Gitはcommitさえしていればだいたい戻せるので、こまめなcommit大事です。

地味に便利だったやつ

log を見やすくする

git log --oneline --graph --all

毎回打つのは長いのでエイリアスにしています。

git config --global alias.lg "log --oneline --graph --all"

これで git lg で呼べます。ブランチの分岐が図で見えるので、mergeやrebaseの理解がだいぶ進みました。

add -p

git add -p

変更をかたまりごとに確認しながらaddできます。「リファクタとバグ修正を1コミットに混ぜるな」とレビューで言われてから使い始めました。

.gitignoreが効かない問題

.gitignore に追加したのに無視されない、というのは大体すでにgit管理下に入っているのが原因でした。

git rm --cached ファイル名

で追跡を外せば効くようになります。.env をpushしかけたときにお世話になりました(pushする前に気づいてよかった…)。

pullで余計なマージコミットができる

git pull --rebase

普通の git pull だと "Merge branch 'main' of ..." みたいなコミットができて履歴が汚れがちですが、--rebase を付けるときれいに取り込めます。

GitHub側の小ネタ

  • リポジトリページで t キー → ファイル名検索。ファイルツリーを掘らなくてよくなる
  • リポジトリページで . キー → ブラウザでVS Codeが開く。ちょっとした確認に便利
  • PRはとりあえず Draft で作っておくと、途中でも方針相談ができる
  • 初回pushは git push -u origin ブランチ名-u を付けておくと次から git push だけでいい

おわりに

Gitは最初「よく分からないけど壊したら怖いもの」でしたが、reflogの存在を知ってからは気楽に触れるようになりました。commitしてれば戻せます。

他にも「これ知らないの?」みたいな小技あればコメントで教えてください🙏

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?