Question

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)

Was it helpful?

Solution

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.

OTHER TIPS

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top