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

主宰稳场 提交于 2019-12-18 11:00:28

问题


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)


回答1:


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.




回答2:


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.




回答3:


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


来源:https://stackoverflow.com/questions/1611211/how-do-i-make-git-accept-mode-changes-without-accepting-all-text-changes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!