私はどのように私は私の地元は今コミットしunstaged状態でfoo.javaを作る削除することができローカルコミット後にファイルを再度ステージング解除するにはどうすればよいですか?
git add <foo.java>
git commit -m "add the foo java"
次のコマンドを実行しましたか?
git reset --hard
と入力すると、変更したfoo.javaを元のものに戻すことがわかりました。
私はどのように私は私の地元は今コミットしunstaged状態でfoo.javaを作る削除することができローカルコミット後にファイルを再度ステージング解除するにはどうすればよいですか?
git add <foo.java>
git commit -m "add the foo java"
次のコマンドを実行しましたか?
git reset --hard
と入力すると、変更したfoo.javaを元のものに戻すことがわかりました。
git reset --soft HEAD^
は、必要な操作を行う必要があります。その後、インデックスの最初の変更(git diff --cached
で表示)が行われ、最新の変更がステージングされません。 git status
は、このようになります。
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: foo.java
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo.java
#
その後、git add foo.java
を行うと、一度に両方の変更をコミットすることができます。あなたがunstageしたいコミットの任意の数がある可能性が1
の代わりに
git reset HEAD~1
:私に
用途:
git reset HEAD^
あなたが尋ねた何であろう、デフォルトでリセット「混合」を行います。 foo.javaをunstagedにして、最新のコミットを削除します。
git reset --soft
はちょうどそのためです:git reset --hard
のようですが、ファイルには触れません。
でした。これは私がまだ聞いたことのない最も簡単な説明でした。ありがとう! – phreakhead
その答えは間違っています。 'git reset'は' git reset --hard'と似ていますが、ファイルには触れません。 " 'git reset --soft'ではありません。 'git reset --soft'は変更をステージングするので、コミットしたい場合にステージングに追加する必要はありませんが、' git reset'する必要があります(2回目、 '--soft')を使ってください。その答えは短いですが、間違っています。 –
常に次はそれを行うための方法(これが望ましい)より読みました。あなたの最後のすべてのファイルがコミットunstagingについては
-
git reset HEAD~
両方の変更はどこにありますか? –
私は答えを編集しました。「変更をコミットする」には最初の変更があり、「変更はコミットのためにステージングされません」には2番目の変更があります。 – Antti
この回答に記載されていることは、実際には 'git commit --amend'が行うことです。はるかに複雑なワークフローが必要です。これは良い指示にもかかわらず、OPの質問に答えることはできません( 'git reset')。 –