Help us understand the problem. What is going on with this article?

いざというとき覚えておきたいgitコマンドまとめ

More than 5 years have passed since last update.

まだあわてるような時間ではございません。

インデックス

1.コミットメッセージを間違えちゃった! -- 直前のコミットのやり直し
2.そろそろブランチを整理しなきゃ! -- ブランチの名称変更と削除
3.間違ってコミットしちゃった! -- コミットを取り消す3つのリセット
4.別のブランチをプッシュしちゃった! -- リモートブランチのリセットと削除
5.コミットの順番を間違えちゃった! -- コミットログの並べ替えと削除
6.コミット細かすぎィ! -- コミットログの統合と編集
7.あのコミットさえあれば…! -- 他のブランチのコミットを適用する
8.やばい!ハードリセットしたら消えちゃった! -- 過去の状態の復元
9.masterにマージ後にバグ発生!どうする!? -- コミットを打ち消すコミット

1.コミットメッセージを間違えちゃった! -- 直前のコミットのやり直し

エディタが立ち上がるので編集しましょう。コミットIDは変わります。

$ git commit --amend

2.そろそろブランチを整理しなきゃ! -- ブランチの名称変更と削除

バックアップ用にブランチを切って後で削除するという用途によく使っています。

ブランチ名変更

$ git branch -m <old_branch> <new_branch>

ブランチ削除

$ git branch -D <branch>

3.間違ってコミットしちゃった! -- コミットを取り消す3つのリセット

リセットはワーキングディレクトリとステージの状態によって3種類あります。

ワーキングディレクトリはそのままでステージとコミットをリセット

$ git reset <commit>

ワーキングディレクトリもステージもそのままでコミットだけリセット

$ git reset --soft <commit>

ワーキングディレクトリ, ステージ, コミットの全てをリセット

$ git reset --hard <commit>

4.別のブランチをプッシュしちゃった! -- リモートブランチのリセットと削除

共用リポジトリで使うと怒られたり泣かれたりするのでやめましょう。
そういうときは後述のrevertを使うと良いかもしれませんね。

リモートブランチのリセット

$ git push -f <repository> <commit>:<branch>

リモートブランチの削除

$ git push <repository> :<branch>

もしくは、1.7.0以降ならこちらでもOKです。

$ git push --delete <repository> <branch>

5.コミットの順番を間違えちゃった! -- コミットログの並べ替えと削除

エディタが立ち上がるので並べ替えたり削除したりしましょう。
push前にログを整理するのによく使われます。

$ git rebase -i <commit>

6.コミット細かすぎィ! -- コミットログの統合と編集

まずはエディタを立ち上げます。

$ git rebase -i <commit>

親コミットに統合したい子コミットのpickfixupに書き換えます。
コミットメッセージを編集したいコミットはpickeditにします。

pick xxxxxx parent
fixup yyyyyy child
edit zzzzzz hoge

7.あのコミットさえあれば…! -- 他のブランチのコミットを適用する

リベースだと都合が悪いときに使います。

$ git cherry-pick <commit>

8.やばい!ハードリセットしたら消えちゃった! -- 過去の状態の復元

落ち着いてください。全ての操作は記録されています。
ログから親コミットを指定してハードリセットします。

$ git reflog
zzzzzz HEAD@{0}: reset: moving to <commit>
yyyyyy HEAD@{1}: foo
xxxxxx HEAD@{2}: hoge
$ git reset --hard HEAD@{1}

9.masterにマージ後にバグ発生!どうする!? -- コミットを打ち消すコミット

revertして修正後に再度マージしましょう。
revertはコミットログに残ります。

$ git revert <commit>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした