我正在开发一个嵌入式Linux项目。我们的构建过程会将图像闪现到设备上。我们的许多文件都需要root权限才能使系统正常工作。当我试图拉动并且其中一些文件被修改时,我遇到了一个问题 - git无法写入这些文件,因此重新设置并执行了sudo pull。然后,当我切换分支时,它说所有这些文件都“无法取消链接...”,但无论如何它都会切换分支,然后当我尝试切换回分支时它不会让我因为我有本地更改。 / p>
所以我做的不对;处理这个问题的正确方法是什么?
答案 0 :(得分:7)
我会构建您的系统,以便源文件不关心它们是什么所有者。您可以在git中检查这些内容,而无需担心它们拥有哪些权限或拥有者是谁(特别是因为“所有者”在git部署可能提供的所有系统中没有意义。)
如果要生成嵌入的图像,请将所有内容复制到新目录,然后然后根据需要设置权限。
答案 1 :(得分:5)
以Karmastan的答案为基础,这里的神奇词汇是“构建脚本”。
git中的文件不必看起来像部署版本。您不部署.c文件 - 首先编译它们。同样,一些配置文件也可以在部署/安装之前完成构建过程。
答案 2 :(得分:3)
最简单的方法(如果可能的话)是不以root身份执行任何操作(克隆等),因为这会导致其他用户无法使用这些文件。
另一种方法是使用git init --shared
为存储库设置共享(组或所有)权限,然后使用git remote add origin http://host/repo.git
和git pull origin master
。这基本上是一个权限较低的克隆。
答案 3 :(得分:1)
我不确定我理解为什么有些文件必须是chowne
'root。直觉我猜你的问题是对所有者的依赖,而不是Git不存储所有权。