2015-11-12 22 views
16

通常、コマンドgit revertは、コミットが戻されたことを示すコミットログメッセージを含むコミットを自動的に作成します。git revert --no-commit(ステージングなし)

自動コミットを避けるには、オプション-n(または--no-commit)があります。

ただし、このコマンドの実行後、元に戻されたファイルはステージングされた領域にあります。私はコマンドgit reset HEADを使用してそれらをステージングできません。

コミットとステージングなしにコミットを元に戻す直接の方法はありますか?

他の言い方をすれば、インデックスに触れることなく、変更を作業ディレクトリだけに適用するコミットを元に戻す直接のコマンドがありますか?

+0

この画像はどのように見えますか? 「元に戻す」とは、元に戻す変更がなければ何を意味しますか? –

+0

コミットやステージング領域の処理を行わずに、ローカルファイルを元に戻した変更を適用したいだけです。これは 'git revert -n && git reset HEAD'を実行すると起こりますが、すぐにやりたいと思います。 – Wizard79

+2

私は理解しています。つまり、復帰した変更をworkdirに適用しますが、ステージングしないようにします。あなたの質問を再読みすると、これは明らかですが、私の最初の読解はその意味を正しく解析しませんでした。 –

答えて

21

単一のコマンドはありません。既に指摘したように、git revert -ngit resetを組み合わせて、索引に元に戻すことができます。

その方法以外にも、あなたはそう、パッチ「を適用逆転」し、そしてあなたがgit showとパッチにコミット回すことができるgit apply -Rを使用することができます。

$ git show <rev> | git apply -R 

は重要なもの(と、同じ効果がありますしかし微妙な)違い。あなたの仕事のツリーを更新する副作用で、git revert -nはで動作し、言い換えれば

-n, --no-commit
Usually the command automatically creates some commits with commit log messages stating which commits were reverted. This flag applies the changes necessary to revert the named commits to your working tree and the index, but does not make the commits. In addition, when this option is used, your index does not have to match the HEAD commit. The revert is done against the beginning state of your index.

、そして上、インデックス:私はgit revertドキュメントから引用し、私自身の重点を追加してみましょう。 git applyコマンドは、作業ツリー上でのみ(デフォルトではいずれにしても)動作し、実際にはgitリポジトリの外部で使用できます。

+0

私は_errorを持っています:認識できないinput_。何が間違っていた可能性がありますか? –

+0

@RobertPankowecki:https://www.google.com/search?&q=git+apply+unrecognized+inputには、色分けされた差分についてのStackOverflowの投稿の最初のヒットがあります。それは最も可能性の高い問題のようです。 – torek

関連する問題