如何使用 git 将目录设置为只读?
情况是 - 在项目中,我有一个共享框架的符号链接。我不希望它以任何方式被覆盖/更改(甚至不是 mtime 或 atime)。
我该怎么做——或者我从错误的角度看待这件事?
答案1
对于特定目录,这是不可能的(可能我不对)。例如,如果用户运行以下命令
git fetch --all
git reset --hard origin/master
或者
git reset --hard HEAD
git pull
欲了解详情,
- https://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull
- https://stackoverflow.com/questions/3720882/git-rebase-would-be-overwritten-and-no-changes-did-you-forget-to-use-git
- https://stackoverflow.com/questions/2665045/can-i-tell-git-pull-to-overwrite-instead-of-merge
Git 手册页可能会帮助你
答案2
首先这个问题可能更适合程序员SE。是的,我认为你从错误的角度看待它。
它基本上可以归结为依赖管理。您应该只使用您的语言/框架的常用工具来表达依赖关系,而不是复制/符号链接其他项目。
如果您确实需要/想要引用其他 git 存储库,您应该使用git submodule
而不是需要到其他存储库的符号链接。
更好、更简洁的方法是使用发行版的包管理来进行依赖项管理,rpm
或者dpkg
只是让您的构建系统或工具来处理依赖项,例如:maven
、bundler
、carton
、openembedded
。