42

我正在尝试运行以下内容:

git update-index --assume-unchanged myFolderToIgnore

myFolderToIgnore文件夹在哪里。然而,它没有说它“无法标记”它。

所以我尝试了:

git update-index --assume-unchanged myFolderToIgnore/

哪个 GIT 响应Ignoring path myFolderToIgnore/但不执行任何操作(它仍然会看到我的更改并尝试签入)。

最后,我不得不手动将每个单独的文件标记为未更改。我在这里想念什么?

4

2 回答 2

76

update-index是一个内部管道命令,因此不如真正的前端命令舒服。您必须自己处理递归位:

git ls-files -z myFolderToIgnore/ | xargs -0 git update-index --assume-unchanged

PSA:很有可能assume-unchanged不是您想要的,您应该使用它skip-worktree。请参阅此处了解更多信息。

于 2013-05-02T20:05:14.330 回答
1

我遇到了这个问题,我的文件夹有数十万个文件和数千个文件夹。

这导致“参数列表太长”。

以下解决方案将为每个文件夹运行命令并遍历这些文件夹中的内容。因此,只要您将数十万个文件分隔在文件夹中,那么这将起作用。

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --assume-unchanged" \;
于 2016-08-12T14:44:58.193 回答