相关疑难解决方法(0)

似乎无法放弃Git的变化

从命令行看到以下内容后:

# On branch RB_3.0.10
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   index.htm
Run Code Online (Sandbox Code Playgroud)

我试图通过键入命令来放弃我的更改:

git checkout -- index.htm
Run Code Online (Sandbox Code Playgroud)

但是当我重新运行git status时,它看起来完全一样.结帐似乎不起作用.难道我做错了什么?我在windows/cygwin上使用GIT 1.6.1.2.

# On branch RB_3.0.10
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified: …
Run Code Online (Sandbox Code Playgroud)

git revert

115
推荐指数
7
解决办法
5万
查看次数

Git在结账时更改我的文件权限

我们的工作流程是在本地计算机上开发,将更改提交到中央存储库,然后检查我们需要的存储库的分支.

问题是Git会更改其签出的文件的所有权甚至文件权限,具体取决于进行结帐的用户.这样做的直接结果是我们的CSS文件在结账后变得不可读,因为Git将文件所有权更改为在webroot中执行Git pull的人.

例:

  • 之前git pull:style.css拥有user_a:group_a
  • 之后git pull:style.css拥有user_b:user_b

我想保持所有权user_a:group_a.每当我的团队中的一个人对文件进行更改并将所有权更改回原始配置时,我都不希望必须登录.

别人怎么处理这个?您如何处理多个用户使用的存储库.我们的系统上有suphp,无法将其取下.

git

41
推荐指数
2
解决办法
5万
查看次数

当我推送到服务器时,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 中更新文件写入权限

背景

我有一个 SSH 配置文件已签入存储库,该存储库由运行自动化测试的系统克隆。我正在运行 Linux(我的目标机器也是如此),并且我不小心检查了文件的第一个版本,其权限字段为 664。OpenSSH 由于组写入权限而拒绝配置文件。

我需要将文件权限位更改为 644 并提交该更改,但 Git 无法识别该文件已更改。

问题

如何更新存储库中的文件写入权限?

解决尝试

  • git add config --force
    文件未添加
  • git config core.filemode true
    文件仍列为未更改
  • git rm --cached config
    git 将文件显示为已删除,但报告“git add config”后没有更改文件
  • 更改权限位并在文件中添加额外的行,提交该更改并推送它
    在另一台计算机上拉取该更改后,出现新的空行,但新的权限未传播 - 它们仍然是 664

其他研究

根据这个线程,Git 只会识别执行位的变化。我测试了更改执行位,并且 git确实识别了该更改并允许我提交它。但我不想设置执行权限位。

这个问题建议使用git-cache-meta来存储除执行位之外的权限位,但看起来该解决方案需要修改存储存储库的远程服务器,而我无法控制该服务器。

我已经咨询了以下SO问题,但它们没有帮助:
How to Force Git to commit a file if it is recognizes as unchanged
Updating file requests only in git

还有多个关于让 Git忽略权限位更改的问题,但答案几乎都围绕 filemode 配置选项,这在这里没有帮助。

git version-control

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