如何在不接受所有文本更改的情况下进行git接受模式更改?

时间:2009-10-23 03:15:59

标签: git chmod

我遇到了相反的问题 “How do I make Git ignore file mode (chmod) changes?” 我有一个文件,我已经更改了可执行权限,但也有 一些文字改变,我想承诺前者而不是后者。这是 可以用git吗?

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

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

3 个答案:

答案 0 :(得分:77)

你应该可以这样做:

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

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

然后,您可以对文件内容的任何更改单独提交。

答案 1 :(得分:15)

git add -i会让您有选择地将一些文件从文件中添加到索引中。我不知道它是否对权限敏感,但如果你在chmod操作后添加一个大块,它可能会在索引中正确结束,即使没有明确更新权限。

答案 2 :(得分:3)

Charles’ answer 我正在为索引添加文件模式和内容更改。我像这样工作。

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

Example

或者你可以做

git update-index --chmod=+x <file>
git config interactive.singlekey 1
echo na | git reset -p