2013-04-17 10 views
22

前回のコミットによってもたらされた影響を調べるために、私はそれを私の作業コピーに逆適用して、コードを覚えていきたいと思います。Reverse作業コピーにコミットを適用する

私はパッチの作成と適用に関するワークフローを管理しましたが、これを簡単に行うことができるのだろうかと思います。これらは、新しいを導入するのいずれか以来、私はgit revertgit rebase -iで見ているわけではない

git checkout -b "tmp-fiddle" 
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch 
# Manually edit the patch a little 
git apply patch_to_examine.patch 

注歴史をコミットまたは変更します。私は単にd9fd2bbに導入された変更は、私の現在の作業コピーに未適用することにしたいです。

+0

何を手作業で編集していますか? –

+0

それはきれいに適用されないパッチでした。空白に関する警告を送信します。 – berkes

答えて

35

git revert -n

-n 
--no-commit 

通常のコマンドは、自動的にコミットが戻った旨のコミットログメッセージといくつかのコミットを作成します。このフラグは、指定されたコミットを作業ツリーおよび索引に戻すために必要な変更を適用しますが、コミットは行いません。さらに、このオプションを使用すると、索引がHEADコミットと一致する必要はありません。復元はインデックスの開始状態に対して行われます。

これは、行内の複数のコミット効果をインデックスに戻すときに便利です。

+1

残念ながら、これは、作業コピーがコミットの影響を受けるファイルに変更を加えていない限り(これは他のファイルに変更を加えることができます)このような場合、あなたは 'git stash; git revert -n ; git stash pop'を実行し、競合があれば解決します。 – arekolek

関連する問題