加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 防止git checkout覆盖文件

发布时间:2020-12-13 23:00:11 所属栏目:Linux 来源:网络整理
导读:另一个开发人员将他的.rvmrc检查到了git repo.我已经将它删除并添加到gitignore,但每次需要回溯它都会覆盖我的.rvmrc.我在OSX上,所以我发现我可以使用OSX文件锁定机制(Get Info中的“Locked”复选框)来阻止我在开发机器上发生这种情况,但是如何在 Linux上完
另一个开发人员将他的.rvmrc检查到了git repo.我已经将它删除并添加到gitignore,但每次需要回溯它都会覆盖我的.rvmrc.我在OSX上,所以我发现我可以使用OSX文件锁定机制(Get Info中的“Locked”复选框)来阻止我在开发机器上发生这种情况,但是如何在 Linux上完成呢?

我知道它要root并chmod到444,但是git(以我的普通用户身份运行),不知何故超越了对所有权的需求.权限,仍然会覆盖该文件.

解决方法

具有讽刺意味的是,虽然git的默认行为是将未跟踪文件视为珍贵文件,但将文件添加到.gitignore会告诉git它可以随时删除文件.

.gitignore中的条目更常用于表示生成的文件,因此git将以静默方式覆盖它们. .git / info / exclude中的条目可能应该用于配置文件的本地版本.

请完整阅读this discussion,因为两者之间的差异似乎有些混乱.我刚尝试了这个,当你回到过去时,.git / info / exclude中的条目受到保护,产生“错误:未经跟踪的工作树文件’.rvmrc’将被合并覆盖.”根据Junio C Hamano的说法,两者之间的这种不同行为可能不是故意的.但是,如果您可以从.gitignore中删除该条目并将其移至.git / info / exclude,您可能能够完成此工作,意识到后者未在存储库之间进行版本控制或共享,并且需要与您的同事进行手动协作.

至于权限问题,请参阅:

$touch foo
$ls -l foo
-rw-r--r--  1 josh  staff  0 Oct  1 09:55 foo
$sudo chown root:wheel foo
$ls -l foo
-rw-r--r--  1 root  wheel  0 Oct  1 09:55 foo
$unlink foo
$ls -l foo
ls: foo: No such file or directory

在Unix中,创建或删除文件的能力仅基于包含它的目录的权限.文件本身的权限仅用于修改文件(不幸的是在您的情况下). rm实用程序检查文件的权限是礼貌,但取消链接是较低级别并盲目地调用系统调用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读