使用git版本控制仅更新和提交文件的权限

时间:2012-05-09 12:34:03

标签: git

刚刚将some.sh文件转换为可执行文件(chmod 755 ...),权限已更新,但内容未更新。有没有办法将文件提交到git中,以便在 clone / checkout / 上恢复/设置可执行位拉

更新:如何跟踪新权限是否已提交至github

3 个答案:

答案 0 :(得分:159)

默认情况下,如果您更改文件权限,git将更新文件权限。

如果在修改权限时没有看到任何更改,您可能在git中有一个忽略文件模式的配置。

查看您的项目,在.git文件的config文件夹中,您应该会看到如下内容:

[core]
    filemode = false

您可以在自己喜欢的文字编辑器中将其更改为true,也可以运行:

git config core.filemode true

然后,您应该能够正常提交您的文件。它只会提交权限更改。

答案 1 :(得分:135)

@fooMonster文章为我工作

# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe    script.sh

如您所见,该文件具有644权限(忽略100)。我们想将其更改为755:

# git update-index --chmod=+x script.sh

提交更改

# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh

答案 2 :(得分:24)

不适合我。

模式是真的,文件烫发已被更改,但是git说没有工作要做。

git init
git add dir/file
chmod 440 dir/file
git commit -a

问题似乎是git只识别某些权限更改。