相关疑难解决方法(0)

如果修改了git中的文件和目录的权限,如何恢复?

我有一个git checkout.所有文件权限都不同于git认为应该是的权限,因此它们都显示为已修改.

在不触及文件内容的情况下(只想修改权限)如何将所有文件权限设置为git认为应该是什么?

git file-permissions file

260
推荐指数
4
解决办法
9万
查看次数

将git钩子放入存储库

它被认为是一种不好的做法 - 将.git/hooks放入项目存储库(例如,使用符号链接).如果是的话,为不同的git用户提供相同的钩子的最佳方法是什么?

git hook githooks

189
推荐指数
6
解决办法
8万
查看次数

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

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

更新:如何跟踪新权限的提交github

git

171
推荐指数
3
解决办法
14万
查看次数

使用Git保留文件权限

我想版本中描述的控制我的Web服务器 为我的Web服务器版本控制,通过创建一个git回购了我的/var/www directory.我希望我能够将我们的开发服务器中的web内容推送到github,将其拉到我们的生产服务器,然后在池中度过剩下的时间.

显然我的计划中的一个问题是Git不会尊重文件权限(我没有尝试过,现在只读它.)我想这是有道理的,因为不同的盒子可能有不同的用户/组设置.但是,如果我想强制传播权限,知道我的服务器配置相同,我有任何选择吗?或者是否有更简单的方法来接近我正在尝试做的事情?

linux git file-permissions

101
推荐指数
4
解决办法
11万
查看次数

当我推送到服务器时,Git正在改变我的文件权限

我正在使用git来管理服务器上的网站.

我有一个本地存储库,如下所示

local@workstation:myapp$ ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
total 16
755 drwxr-xr-x@ 18 thomas  staff   612 Jun 13 15:35 application
755 drwxr-xr-x@ 11 thomas  staff   374 Jun 12 16:25 assets
644 -rw-r--r--@  1 thomas  staff  6399 Jun 22 11:45 index.php
755 drwxr-xr-x@ 10 thomas  staff   340 May 14 15:22 system
Run Code Online (Sandbox Code Playgroud)

我在服务器上有一个裸存储库,用于post-receive将存储库指向apache前面.Apache的public文件夹内容低于 - 不是裸存储库.

root@server:/srv/public/myapp# ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}'
total 20
700 drwx------ 15 root root 4096 Jun 27 11:31 application
700 drwx------ 10 …
Run Code Online (Sandbox Code Playgroud)

git permissions file-permissions

22
推荐指数
1
解决办法
2万
查看次数

使用git签出文件时如何找出导致文件权限更改的原因?

将文件推送到我们的服务器后,将执行以下 post-receive 挂钩:

#!/bin/sh
export GIT_WORK_TREE=/home/user/www/
git checkout -f
Run Code Online (Sandbox Code Playgroud)

但是,文件在结帐时获得了非常奇怪的600权限和文件夹700。这不是我所期望的(在我们的其他服务器上,我们得到644755)。从这个线程我了解到 git 没有设置权限,所以 git 不应该受到责备。我的问题是:什么是?我怎样才能弄清楚这个问题的原因是什么?

我已经通过在结帐时运行额外的脚本来修复权限来暂时解决它,但我有兴趣解决根本原因。

我正在使用 gitolite 来管理存储库,但我怀疑这是原因。但同样,我很高兴知道我可以从哪里开始,因为此时我不确定如何调查。

根据最初的答案,我查看了服务器上的 umask 设置。该git用户(这是用来上传文件的用户),umask设置为0002。这在下面的练习证实:

git@server:~$ umask
0002
git@server:~$ touch newfile
git@server:~$ ls -la newfile
-rw-rw-r-- 1 git git 0 Aug  5 10:46 newfile
Run Code Online (Sandbox Code Playgroud)

额外细节:

  • 服务器端和开发端都使用Linux
  • 在本地 repo 中,权限为 755 和 644
  • filemode 在 .git/config 中设置为 true

git permissions gitolite

5
推荐指数
1
解决办法
442
查看次数

标签 统计

git ×6

file-permissions ×3

permissions ×2

file ×1

githooks ×1

gitolite ×1

hook ×1

linux ×1