我从“如何使 Git 忽略文件模式 (chmod) 更改? ”中遇到了相反的问题,我有一个文件,我已经更改了可执行权限,但也有一些文本更改,我想提交前者但不提交后者。这可以用git吗?
(实际上,我已经做了一些我想提交的文本更改以及可执行权限更改,还有一些我不想提交)
更新:取消暂存对文件的文本更改,然后git add -p
再次执行并合并一些文本更改,设法使模式更改进入暂存状态。(我的git版本是1.5.4.3)
我从“如何使 Git 忽略文件模式 (chmod) 更改? ”中遇到了相反的问题,我有一个文件,我已经更改了可执行权限,但也有一些文本更改,我想提交前者但不提交后者。这可以用git吗?
(实际上,我已经做了一些我想提交的文本更改以及可执行权限更改,还有一些我不想提交)
更新:取消暂存对文件的文本更改,然后git add -p
再次执行并合并一些文本更改,设法使模式更改进入暂存状态。(我的git版本是1.5.4.3)
你应该能够做到:
git update-index --chmod=(+|-)x <file>
调整存储在索引中的可执行位。
然后,您可以将其与对文件内容的任何更改分开提交。
git add -i
将允许您有选择地将文件中的一些大块添加到索引中。我不知道它是否对权限敏感,但是如果您在chmod
操作后添加一个大块,即使没有显式更新权限,它也可能正确地出现在索引中。
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