180

しばらく前に、git によって追跡されるファイルへの変更を無視するためにこれを行いました。

git update-index --skip-worktree <file>

ここで、実際にそのファイルへの変更をソースにコミットしたいと思います。の影響を元に戻すにはどうすればよいskip-worktreeですか?

4

8 に答える 8

250

あはは!私は単に欲しい:

git update-index --no-skip-worktree <file>
于 2012-06-21T03:43:17.760 に答える
38

http://www.kernel.org/pub/software/scm/git/docs/git-update-index.htmlによると、使用

git ls-files -v

特別な文字でマークされた「assume changing」および「skip-worktree」ファイルを表示します。「skip-worktree」ファイルは でマークされていSます。

編集@amacleodが述べたように、すべての隠しファイルをリストするエイリアスを作成することは、覚えておく必要がないようにするための良いトリックです。alias hidden="git ls-files -v | grep '^S'".bash_profile で使用します。それはうまくいきます!

于 2012-11-26T15:59:50.353 に答える
24

スキップ ワークツリーが適用されたすべてのファイルを元に戻したい場合は、次のコマンドを使用できます。

git ls-files -v | grep -i ^S | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree
  1. git ls-files -vすべてのファイルをステータスとともに出力します
  2. grep -i ^Sファイルをフィルタリングし、スキップ ワークツリー (S) のみを選択するか、ワークツリーをスキップして未変更 (s) を想定します。-i は、大文字と小文字を区別しないことを意味します。
  3. cut -c 3-ステータスを削除し、パスのみを残し、3 番目の文字から最後までカットします
  4. tr '\012' '\000'行末文字 (\012) をゼロ文字 (\000) に置き換えます。
  5. xargs -0 git update-index --no-skip-worktreeゼロ文字で区切られたすべてのパスgit update-index --no-skip-worktreeを undoに渡します
于 2015-12-31T22:02:52.170 に答える
8

@GuidC0DEの回答に基づいて、これがPowershellのバージョンです(私はposh-gitを使用しています)

git update-index --no-skip-worktree $(git ls-files -v | sls -pattern "^S"| %{$_.Line.Substring(2)})

参考までに、ファイルを非表示にする反対のコマンドも示します。

git update-index --skip-worktree $(git ls-files --modified)
于 2017-07-10T09:19:25.767 に答える