6

git リポジトリには、過去の特定の状態 (以前のコミット) にリセットしたいサブディレクトリがあります。特定のサブディレクトリ内のファイルに対するすべてのコミットを元に戻すことはできますか? このサブディレクトリ内のファイルと他の場所にあるファイルに同時に変更を適用するコミットはないと思います。しかし、このディレクトリに配置されていないファイルのコミットを影響を受けないままにしておくことができればいいでしょうか?

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

4

2 に答える 2

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>"
于 2012-05-15T08:52:07.887 に答える
1

元に戻したいすべてのコミットを実行する場合は、git revertを使用してそれらを取り消すことができます。これは、トラブルメーカーであるコミットが1つまたは2つしかない場合に最も役立ちます。

CharlesBの答えは、コミットがたくさんある場合、またはコミットがプロジェクトの他の部分に影響を与える場合に採用するより簡単なアプローチです(ただし、実際には、-n(自動コミットしない)フラグを使用して、変更のみをコミットすることで回避できます)。に興味があります)

于 2012-05-15T11:23:42.150 に答える