Reputation: 81510
I've got the opposite problem from "How do I make git ignore mode changes (chmod)?" 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)
Upvotes: 36
Views: 29398
Reputation: 1
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>
Alternatively you can do
git update-index --chmod=+x <file>
git config interactive.singlekey 1
echo na | git reset -p
Upvotes: 2
Reputation: 791849
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.
Upvotes: 83
Reputation: 33239
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.
Upvotes: 15