LoginSignup
2
1

More than 3 years have passed since last update.

良く使う、私的な git command のまとめ

Last updated at Posted at 2019-02-10

概要

gitを用いての開発を、個人的にも、複数の会社でも経験してきましたが
そんな中で良く使っているgit commandをケースに合わせて淡々と書いてみようと思います。
(基礎的な物は省略します)

この記事では pushに force をよく使っているので、一つのブランチを複数人で暖める開発事案には
不適切なことがございます。forceは用法・用量を守って正しくお使いください。

私的なgit command

branch作成

$ git checkout -b feature/WORK

空のbranchを作成

変更履歴に含めるのに適さない
画像やドキュメント等を管理したいときに使います。
直接URLでアクセスできるので、README.mdに記載して利用が可能です。

$ git checkout --orphan docks

commitした後に、やっぱりやり直したい

$ git reset --soft HEAD^

# commitを2個やり直したい
$ git reset --soft HEAD^^

# やり直した場合、以前のがpush済みならforceを付ける
$ git push origin feature/WORK -f

作業branchに基点branchの最新を取り込む

$ git pull
$ git merge develop

# 履歴を綺麗にしたいのなら rebase も有(conflictが発生したら、即終了が良いです。後半で少し触れます)
$ git rebase develop

↑のbranchの取り込みを無くしたい

今まで開発していて、hardが便利だと思ったケースです。

$ git reset --hard HEAD^

# push済みなら、forceを付ける
$ git push origin feature/WORK -f

別branchのcommitの一部を取り込みたい

$ git cherry-pick ${COMMIT_ID}

PRのレビューを受け、作業branchから切り替えるとき

手元の変更をロストしても良い場合(些細な変更など)

手元に保存されるため、もしもdisk障害など発生した場合はロストする可能性があります。

# 今の変更を保存
$ git stash save

# PRを更新したいbranchに変更
$ git checkout feature/REVIEW

~ ~ ~

# 修正が完了したらbranchを元に戻し、続きを行う。
$ git checkout feature/WORK
$ git stash pop

ロストは絶対に避けたい場合。

commit

# 中途半端な状態でもcommitしてpushしてしまう
$ git commit -a -m "stash"
$ git push origin feature/WORK

feature

# branchを作成
$ git checkout -b feature/WORK_stash
# 今の時点の変更をcommit
$ git commit -a

# push(Remoteに上げるので、ロストする可能性はほぼ無くなる)
$ git push origin feature/WORK_stash

# PRを更新したいbranchに変更
$ git checkout feature/REVIEW

~ ~ ~

# レビューの更新が終わったので、作業branchに戻る
$ git checkout feature/WORK

# stashを取り込む
$ git merge feature/WORK_stash

# 削除
$ git push origin :feature/WORK_stash

force-pushで更新されたbranchを取り込んでしまった場合

Conflictが発生したら、ローカルのbranchから削除し、対象のBranchに切り替えることで解消できます。

# Conflict発生ならmergeを中断
$ git merge --abort

# 更新されていないbranchに変更
$ git checkout master

# 該当するbranchを削除
$ git branch -D feature/WORK

# 該当branchに切り替える
$ git checkout feature/WORK

PRを作る直前にやる事

Rebase編

履歴を少しでも綺麗にしたいと思うので、とりあえずrebaseをしてみます。
1* rebaseに失敗すると大変なので、確実に変更を取り込むならmergeが良いです
2* rebaseに時間が掛かるようなら時間の無駄だと思っているので、mergeして一回でconflictを解消した方が良いです(ステマ)

$ git pull
$ git rebase develop

# conflictが無く無事にrebaseできたら、force push
$ git push origin feature/WORK -f

Merge編

$ git pull
$ git merge develop

# conflictが無く無事にmergeできたら、普通にpush
$ git push origin feature/WORK

最後に

まだあったと思うので、思い当たったら追記したいと思います。

参考記事

https://qiita.com/nantekkotai/items/2ed17c3d774211d234a4
https://qiita.com/ciloholic/items/769fba1c178a897cf42e

2
1
1

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
2
1