2012-03-22 15 views
5

2番目のコミットを削除しようとしています。この時点で、私はちょうど.gitディレクトリを吹き飛ばすし、それを再実行するが、私はこれを行う方法を好奇心でした...私は削除したが前にコミットが、どうやら、決して第二1 :)git:2番目のコミットを削除する

> git log 

commit c39019e4b08497406c53ceb532f99801793205ca 
Author: Me 
Date: Thu Mar 22 14:02:41 2012 -0700 

    Initializing registry directories 

commit 535dce28f1c68e8af9d22bc653aca426fb7825d8 
Author: Me 
Date: Tue Jan 31 21:04:13 2012 -0800 

    First Commit 

> git rebase -i HEAD~2 
fatal: Needed a single revision 
invalid upstream HEAD~2 

> git rebase -i HEAD~1 

はその時点で私は私のエディタで取得:

pick c39019e Initializing registry directories 

# Rebase 535dce2..c39019e onto 535dce2 
# 
# Commands: 
# p, pick = use commit 
# r, reword = use commit, but edit the commit message 
# e, edit = use commit, but stop for amending 
# s, squash = use commit, but meld into previous commit 
# f, fixup = like "squash", but discard this commit's log message 
# x, exec = run command (the rest of the line) using shell 
# 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# However, if you remove everything, the rebase will be aborted. 
# 

私の問題は、私はちょうどこの第二は

答えて

5

で「あなたはすべてを削除する場合、リベースが中止されます」ので、コミット吹き飛ばすことができないということです一番上のコミットを削除するには、git reset --hard HEAD~を使用してください。他のコミットの間で何かを削除していないので、Rebaseは必要ありません。

0

それが最後のコミットである場合、あなたが行うことができます:

git reset --hard HEAD~ 

そして、それは最後のコミットされていない場合は、別のリベースリストに少なくともコミットなければならなかったでしょうし、あなたが第二コミット削除することができます。

1

コミットを元に戻してください。

git revert 535dce28f1c68e8af9d22bc653aca426fb7825d8 または git revert HEAD~1

+0

これは無意識のうちに別のコミットを追加する –

+0

どのように違いがありますか?変更を削除するというあなたの目標が完了しました。 – bluesman

+0

私はまだプッシュしていなかったので、実際に "コミット"を押す際にポイントを見ないので、 "前回のコミットを元に戻す"。あなたの答えは_wrong_ではない、私は他の方が良いと思う:P –

2

これは、既に(上記の)答えが、新しいgitの中で、あなたがファイルに入れることができますnoopコマンドがあることに注意しています。確かにこれはgit resetが同じように簡単に行っていない何もしない...しかし、あなたはすでにインタラクティブリベースを開始した場合、そしてあなただけが望んで実現

$ git rebase -i HEAD^ 
[in editor, change pick line to noop, and write and quit] 
".git/rebase-merge/git-rebase-todo" 15L, 492C written 
Successfully rebased and updated refs/heads/master. 
$ 

:だからnooppick行を置き換えることができます実際には、noopのトリックは便利です。

0

はまた、次の操作を行うことができます

git rebase -i --root 

これは根があなたのリベースにコミットが含まれます。 fixupsquashのいずれかを選択するか、必要に応じて2番目のコミットを完全に削除します。

関連する問題