2012-05-15 13 views
6

gitリポジトリには、過去の特定の状態(以前のコミット)にリセットするサブディレクトリがあります。特定のサブディレクトリにあるファイルのすべてのコミットを元に戻すことはできますか?私は、このサブディレクトリ内のファイルと他の場所にあるファイルに同時に変更を加えるコミットはないと考えています。しかし、ではなく、がこのディレクトリにあるファイルにコミットを残すことが可能であればいいでしょうか?サブディレクトリを特定の過去の状態に永久にリセットする

私は履歴を削除する必要はありません。古い状態をチェックアウトし、サブディレクトリの現在の内容を削除し、元の状態をその場所にコピーしてコミットすることは問題ありません。しかし、最終的にはよりエレガントな(gitonic)方法があるかもしれません。

答えて

10

git checkoutの機能をサブディレクトリに適用する最も簡単な方法です。そして、ステージとコミット:

git checkout <old-SHA1> -- path/to/subdir 
git add -A path/to/subdir 
git commit -m "reverted files in path/to/subdir to what it was at <old-SHA1>" 
+0

これは期待どおりに動作していないようです。現在のリビジョンに存在するが古いリビジョンには存在しないファイルは、このコマンドの影響を受けませんが、 'git reset -hard'(ただし' git reset -hard'はサブディレクトリでは使用できません)となります。 – Ajedi32

1

をあなたが元に戻すコミットのすべてを作業する場合、あなたがそれらをバックアウトするgit revertを使用することができます - した1つまたは2つのコミットがあった場合、これが最も有用であろうトラブルメーカー。

CharlesB's answerは、コミットが多い場合や、コミットがプロジェクトの他の部分に触れた場合(ただし、-n(自動コミットしない)フラグを使用することで実際に回避できます)あなたが興味を持っている変更をコミット)

関連する問題