How do I make git accept mode changes without accepting all text changes?

I've got the opposite problem from "How do I make Git ignore file mode (chmod) changes?" I've got a file that I've changed executable permission on, but there are also some text changes, and I want to commit the former but not the latter. Is this possible with git?

(Actually, I've made some text changes I want to commit along with the executable permission change, and others I don't want to commit)

Update: Unstaging the text changes to the file, and then doing git add -p again and incorporating some of the text changes managed to get the mode change into staging. (My git version is 1.5.4.3)


git add -i will let you selectively add some hunks from a file to the index. I don't know whether or not it's sensitive to permissions, but if you were to add a hunk after the chmod operation, it might end up in the index correctly even without explicitly updating the permission.


You should be able to do:

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

to adjust the executable bit stored in the index.

You can then commit this separately from any changes to the files content.


Charles' answer was adding both file mode and content changes to the index for me. I worked around it like this.

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

Example

Alternatively you can do

git update-index --chmod=+x <file>
git config interactive.singlekey 1
echo na | git reset -p
链接地址: http://www.djcxy.com/p/30018.html

上一篇: 我如何放弃修改过的文件?

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