【问题标题】:remove execute only file from git tracking从 git 跟踪中删除仅执行文件
【发布时间】:2019-04-19 21:08:59
【问题描述】:

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

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 status 时弹出它。

如何将它添加到 repo 或告诉 git 忽略它?

【问题讨论】:

标签: git file-permissions gitignore


【解决方案1】:

如何将它添加到 repo 或告诉 git 忽略它?


--assume-unchaged

在此文件上提高 --assume-unchaged 标志,以便停止跟踪此文件上的更改

--[no-]assume-unchanged

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

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

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

如果需要修改索引中的这个文件,Git 将失败(优雅地),例如合并提交时;因此,如果假定的未跟踪文件在上游发生更改,您将需要手动处理这种情况。

【讨论】:

  • 几周后它不会让我结帐大师。结果和更新索引一样,他们还需要进入 .gitignore,来自here 的命令git status --porcelain | grep '^??' | cut -c4- >> .gitignore 很有帮助。
【解决方案2】:

将它添加到 .gitignore 对正在跟踪它的修订版不起作用,因为该文件已经被跟踪.....它会在您删除它(并提交)后对修订版起作用。那么,如果你从文件中删除所有权限,你期望git如何能够使用它呢?它无法读取它。所以...如果您不介意该文件在历史记录中然后消失,您可以将其删除 (git rm --cached the-file),将其添加到 .gitignore,然后提交。对于以该修订开始的修订,该文件将不再显示以添加。但是,如果您选择签出到以前的修订版,请不要惊讶地看到 git 的行为很有趣,因为该文件存在于您的工作树上。

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 2020-11-18
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多