tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【git】add、commit、push、merge、pull request、merge pull request、tagの取り消し

はじめに

gitは便利なコマンドも多くできることも多いです。
試しているとこれ便利だなーどこかで使いたいなーと思うものも多いですが、
実際の運用で考えた場合は頻繁ではないものの絶対に避けて通れないのが取り消し系のコマンドです。

ということで、add、commit、push、merge、pull request、merge pull requestの
をそれぞれ取り消すコマンドを後で自分でも見る用にまとめ

アジェンダ

  1. git add 取り消し
  2. git commit取り消し
  3. git push取り消し
  4. git merge取り消し
  5. pull request取り消し
  6. merge pull request取り消し
  7. git tag取り消し

ここに挙げるのは例で、それぞれの取り消しに対していくつか方法があるので
どういう取り消し方法が良いかはチームにあった形でみつけてください。

1. git add 取り消し

git reset

個別に取り消し

$ git reset HEAD [ファイルパス]

全部取り消し

$ git reset HEAD
参考

2. git commit取り消し

git reset

2つ前のcommitを取り消し

$ git reset --soft HEAD~2
git commit --amend

1つ前のcommitを上書き

$ git commit --amend
git update-ref -d HEAD

最初のcommitを取り消し

$ git update-ref -d HEAD
参考

3. git push取り消し

pushしてしまったものは共有環境への操作でもあるので
revertだと取り消したという履歴も残せて良いですね。

git reset

2つ前のcommitを取り消して、強制的にpush

$ git reset --soft HEAD~2
$ git push -f
revert

revetで取り消してリモートにpush

$ git revert [コミットハッシュ]
$ git push
参考

4. git merge取り消し

git reset

直前のmergeを取り消し

$ git reset --hard HEAD^
参考

5. pull request取り消し

git push --delete origin [ブランチ名]

pull requestを送ったブランチ名を指定して--deleteオプションつきでpush

$ git push --delete origin [ブランチ名]
参考

6. merge pull request取り消し

git revert

-m 1オプション + mergeコミットのハッシュ番号を指定してrevert

$ git revert -m 1 マージコミットハッシュ番号
参考

7. git tag取り消し

git tag -d タグ

ローカルのタグを取り消し

$ git tag -d タグ
git push origin :refs/tags/タグ

リモートのタグを取り消し

$ git push origin :refs/tags/v1.0.6
参考

まとめ

今回挙げたコマンド以外にもrebaseで戻すなど、
運用方法によって違うこともあると思うのでそこらへんはチームにあわせてやってきましょうー!\(^o^)/

一応rebaseの参考も
あのコミットをなかった事に。git rebase -i の使い方