Git file permissions on Windows

后端 未结 6 2000
清歌不尽
清歌不尽 2020-12-04 04:58

I\'ve read through a few questions regarding file permissions in Git and I\'m still a bit confused. I\'ve got a repo on GitHub forked from another. Post merge, they should b

相关标签:
6条回答
  • 2020-12-04 05:26

    First check file permissions using below command.

    git ls-files --stage
    

    Then change permissions. Here "x" represents execute permissions.

    git update-index --chmod=+x 'scriptname.ext'
    

    Now re-verify the permissions.

    git ls-files --stage

    ==============================================

    if you are using Windows PC, but deploying on linux machine. Execute the below command in the first place to make it compatible to run on linux machine

    dos2unix scriptname.ext scriptname.ext

    0 讨论(0)
  • 2020-12-04 05:29

    I fixed it by changing the file permissions in Ubuntu, commit, push and all OK. Seems it just wouldn't work with msysgit on Windows/NTFS.

    0 讨论(0)
  • 2020-12-04 05:30

    Handy one-liner for Git Bash:

    find . -name '*.sh' | xargs git update-index --chmod=+x
    

    It will mark all .sh file as executable. After that, you just have to git commit.

    0 讨论(0)
  • 2020-12-04 05:36

    I found the solution of how to change permissions (also) on Windows here: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

    For example following command adds user execute permission to an arbitrary file:

    git update-index --chmod=+x <file>
    
    0 讨论(0)
  • 2020-12-04 05:37

    If you use Cygwin git (or Linux git, too, I assume), there's a good chance your core.filemode setting has been set at the project level in $projdir/.git/config . I found that I had to do the following to get my Cygwin git and my Windows git to coexist nicely on a Windows filesystem without nonexistent filemode changes showing up all the time:

    • delete the line setting core.filemode in $projdir/.git/config
    • in Windows git, run "git config --global core.filemode false"

    This allows my Cygwin git to continue to see filemode changes, which are usually relevant, while instructing the Windows git to ignore the filemode changes it sees, which are usually false positives.

    0 讨论(0)
  • 2020-12-04 05:42

    From another question here on stackoverflow: How do I make Git ignore file mode (chmod) changes?

    Try:

    git config core.filemode false
    

    From git-config(1):

       core.fileMode
           If false, the executable bit differences between the index and the
           working copy are ignored; useful on broken filesystems like FAT.
           See git-update-index(1). True by default.
    
    0 讨论(0)
提交回复
热议问题