从git跟踪中删除仅执行文件

时间:2018-11-16 16:31:16

标签: git file-permissions gitignore

我需要使存储库中的文件不可读且不可写:

AS3D3A3
A3L3O3L3

当您列出它时,它看起来像这样:

sudo chmod 101 file1.sh

$ ls -la file1.sh ---x-----x 1 cardamom cardamom 13 Nov 16 16:52 file1.sh 不起作用:

git add

并将其添加到error: open("file1.sh"): Permission denied error: unable to index file file1.sh fatal: updating files failed 不会导致忽略它。
我确实不需要跟踪它,但是最好不要在每次输入.gitignore时都弹出它。

如何将其添加到仓库中或告诉git忽略它?

2 个答案:

答案 0 :(得分:2)

将其添加到.gitignore不会在正在跟踪它的修订版上起作用,因为已经对该文件进行了跟踪.....在删除(并提交)之后,它将在修订版上起作用。然后,如果您从文件中删除所有权限,您如何期望git能够使用它?它看不懂。因此,...如果您不介意历史文件然后消失,则可以将其删除(git rm --cached the-file),将其添加到.gitignore,然后提交。对于从此版本开始开始的版本,该文件将不再显示要添加。但是,如果您选择检出以前的版本,则由于工作树中存在该文件,所以git表现得很好就不足为奇了。

答案 1 :(得分:2)

  

如何将其添加到仓库中或告诉git忽略它?


--assume-unchaged

提高此文件上的--assume-unchaged标志,使其停止跟踪此文件上的更改

  

--[no-]assume-unchanged

     

指定此标志时,为路径记录的对象名称不会更新。

     

相反,此选项设置/取消设置路径的assume unchanged位。

     

assume unchanged位为 on 时,用户承诺不更改文件,并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在lstat(2)系统调用非常慢的文件系统(例如cifs)上处理大型项目时,这有时会很有帮助。

     

如果需要修改索引中的该文件,Git将失败(正常)。合并提交时;因此,如果假定未跟踪的文件在上游进行了更改,则需要手动处理这种情况。

enter image description here