どのようにgit reset --hardサブディレクトリをリセットするのですか?
UPDATE²:Git 2.23(2019年8月)では、これを行う新しいコマンドgit restoreがあります。承認された回答を参照してください。 更新:これはGit 1.8.3の時点でより直感的に機能します。自分の答えを参照してください。 次の使用例を想像してみてください。Git作業ツリーの特定のサブディレクトリにあるすべての変更を取り除き、他のすべてのサブディレクトリはそのまま残したいとします。 できますgit checkout .がgit checkoutです。スパースチェックアウトによって除外されたディレクトリを追加します がありますがgit reset --hard、サブディレクトリに対しては実行できません。 > git reset --hard . fatal: Cannot do hard reset with paths. 繰り返しますが、なぜgitはパスでハード/ソフトリセットを実行できないのですか? を使用して現在の状態をリバースパッチすることはできますgit diff subdir | patch -p1 -Rが、これはかなり奇妙な方法です。 この操作に適切なGitコマンドは何ですか? 以下のスクリプトは問題を示しています。How to make filesコメントの下に適切なコマンドを挿入します。現在のコマンドはa/c/ac、スパースチェックアウトによって除外されるはずのファイルを復元します。私がいることを注意していない明示的に復元したいa/aとa/b、私は「知っている」aと、以下のすべてのものを復元したいです。編集:そして私はまたb、「知っている」、または他のどのディレクトリがと同じレベルにあるかを知りませんa。 #!/bin/sh rm -rf repo; git init repo; cd repo for f in …