👀
git rebase基礎【備忘録】
記事の概要
GitHub Desktop上でrebase
しようとすると、なぜかmerge commitが作られてしまうので、
ターミナルから正しくrebase
をする方法の備忘録。
なぜrebase?
merge
ではPRを見るときにlogがごちゃついて読みにくい。
rebase
なら本当に必要なcommitだけがlogに残る。
想定読者
- 普段はGitHub Desktopの恩恵を受けているのでターミナルでのgit操作を忘れてしまう人(私)
-
rebase
自体の意味は知っているが、rebase
するのが怖い人(私)
本題: rebaseのやり方
working-branch
に、developのcommitを取り込みたい
例: git checkout develop
git pull origin develop
git checkout working-branch
git rebase develop
git push --force-with-lease origin working-branch
ここまでが1セット。ちなみに
git push -f origin working-branch
してしまうと、うっかり他人のコードを上書きしてしまう危険があるので、
git push --force-with-lease origin working-branch
の方がいい。
merge-commit
を取り消したい
おまけ: 誤ったworking-branch
に不要なmerge-commit
を作ってしまった上に、
リモートにpush
してしまった時は、次の手順で取り消せる。
(現在位置はworking-branch
とする)
git reset —hard HEAD^
git push --force-with-lease origin working-branch
HEAD^
はHEAD
の一つ前のコミット(今回の場合merge-commit
のひとつ前)を指す。
もしまだリモートにpush
してないのなら、
git reset --soft HEAD^
で済むし、git push --force-with-lease
も不要。
Discussion