goroumaru41gou

遊んでいる中でインプットした内容をアウトプットする場

【まとめ】結局、gitってコマンドなにを使えばいいの?(都度、更新中)

頻度が少ないコマンドだと、毎回調べては違う記事へ行き付き、何が正しいか確信を持てなくなってくきたので、備忘録とする。

取り扱うもの

gitについて (都度、記事更新中)

コマンドのエイリアス、オプションなど

[alias]
    br = branch
    ca = commit --amend
    can = commit --all --amend --no-edit
    ci = commit
    co = checkout
    cp = cherry-pick
    fe = -c diff.mnemonicprefix=false -c core.quotepath=false fetch --prune origin
    hard = reset --hard
    ll = log --graph --decorate --oneline --abbrev-commit
    p = push origin HEAD
    pop = stash pop
    pr = pull --rebase upstream
    soft = reset --soft
    st = status
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[git commit]
-a , --all    # 変更済みファイルをコミットする
-m, --message # コミットメッセージ指定

①Pushまでの流れ

branchを切り、機能追加したあと・・・

  1. とりあえず、修正したらコミットする

    git commit -am "update" // あとで、まとめるのでupdateという名称でもよい

  2. ブランチを最新に保つ

    git pull --rebase origin master

  3. リモートへプッシュする

    git push // VSCodeのボタンぽちぽちしてる・・・

コミットを1つにまとめたいとき

「ブランチを最新に保つ」前に・・・

  1. HEADが戻る先を確認する

    git reflog

  2. HEADをNコミットまで戻す

    git reset --soft HEAD@{N}

  3. ステージングされている変更を1つ前のコミットへ追加する

    git can

直前のコミットへ修正ファイルを追加したいとき

  1. 対象ファイルをステージングする

    git add fileName

  2. 直前のコミットを修正する(追加)

    git commit --amend --no-edit

    --no-editは、コメント修正なし

GitHubでMerge、ブランチ削除されたあとの流れ

ローカルでもMergeされたブランチを削除したい・・・

  1. github上でMergeされる
  2. リモートブランチを同期する

    git fetch -p // リモートで削除されたブランチを削除してfetch

  3. ローカルブランチを強制削除する

    git branch -D branchName

誤って違うブランチを削除したとき

  1. 削除前にHEADを戻す

    git reflogで戻す

③ コンフリクトしてしまった場合

git pull --rebaseしたときなど・・・

コンフリクト前に戻すケース

  1. 元に戻す

    git rebase --abort or git reset -hard HEAD

コンフリクト解消するフロー

  1. コンフリクト箇所を修正する
  2. 修正内容の差分有無によって、次を作業する
    • 差分ありのとき、そのファイルをコミットする
    • 差分なしのとき、コミットは必要ない
  3. 全コンフリクト解消を確認する

    git status

  4. 項2の作業によって、次を作業する

    • 項2でコミットした場合、git rebase --continue
    • 項2でコミットしない場合、git rebase --skip

    git rebase --continueしても意味なし

コンフリクト解消後、リモートへプッシュするとき

コンフリクト解消したあとで・・・

  1. 強制プッシュする

    git push -f

 安易にpush -fせず、ブランチ共同利用者へ承諾を得ること

④ squash meargeが原因でコンフリクトした場合

githubでsquash meargeされると、コンフリクトするが・・・

  1. ブランチを切った元のコミットまで戻って、コミットを1つにまとめる

    git reset --soft HEAD@{N}

  2. 新しいブランチをorigin/masterをブランチ元として発行する

  3. 1つにまとめたコミットIDを確認する

    git log -oneline // コミットIDが見やすい表示とする

  4. 新しいブランチ上で、古いブランチから1つにまとめたコミットを適用する git cherry-pick "commit_ID" // 調べたコミットIDを入力する

⑤修正内容を一時退避する場合

修正中の内容をコミットせずに退避して、別のブランチへ移動したいときなど。

  1. 修正内容を一時退避する

    git stash または git stash save "コメント"

  2. 退避内容を確認する

    git stash list

  3. ブランチ移動など、退避後に実施する内容を行う

  4. 現在のブランチに、退避内容を適用する

    git stash apply stash@{N} // 退避内容を適用するのみ

    git stash pop stash@{N} // 退避内容を適用後、削除する

    ※Nは、項2で確認した番号

  5. 退避内容を削除する

    git stash drop stash@{N}

    ※Nは、項2で確認した番号

⑥タグ

  1. タグ一覧

    git tag

  2. タグ詳細

    git show <タグ名>

  3. タグ追加

    タグ付けしたいブランチへ移動したあと

    git tag <タグ名>

  4. タグをリモートへPUSH

    git push origin <タグ名>

    PUSH後、同タグは修正しない。新しいタグを付け直す。

参考

https://kray.jp/blog/git-pull-rebase/