35

我从“如何使 Git 忽略文件模式 (chmod) 更改? ”中遇到了相反的问题,我有一个文件,我已经更改了可执行权限,但也有一些文本更改,我想提交前者但不提交后者。这可以用git吗?

(实际上,我已经做了一些我想提交的文本更改以及可执行权限更改,还有一些我不想提交)

更新:取消暂存对文件的文本更改,然后git add -p 再次执行并合并一些文本更改,设法使模式更改进入暂存状态。(我的git版本是1.5.4.3)

4

3 回答 3

81

你应该能够做到:

git update-index --chmod=(+|-)x <file>

调整存储在索引中的可执行位。

然后,您可以将其与对文件内容的任何更改分开提交。

于 2009-10-23T06:28:33.717 回答
15

git add -i将允许您有选择地将文件中的一些大块添加到索引中。我不知道它是否对权限敏感,但是如果您在chmod操作后添加一个大块,即使没有显式更新权限,它也可能正确地出现在索引中。

于 2009-10-23T03:19:44.063 回答
3

Charles 的回答 是为我在索引中添加文件模式和内容更改。我像这样解决它。

git update-index --skip-worktree --chmod=+x <file>
git update-index --no-skip-worktree <file>

例子

或者你可以做

git update-index --chmod=+x <file>
git config interactive.singlekey 1
echo na | git reset -p
于 2014-01-01T07:22:24.727 回答