git file mode change


近期在做ffmpeg版本合並時發現,TortoiseGit的Check for Modifications的修改對話框中有未修改的問題,直接導出diff,會有類似下面的輸出:

compat/plan9/head            |   0

diff --git a/compat/plan9/head b/compat/plan9/head
old mode 100755
new mode 100644

但修改行和添加行都是0,搜索查找發現,主要問題是由於文件權限問題。
由於在windows下沒有對應數字的文件權限,而在*nix中確有,上面的數字含義755=rwxrw_rw_, 644=rw_r__r__,而100表示文件。
由於直接從linux到windows下clone,相關權限信息可能丟失。
解決方法如下:

  1. 命令行下使用

git config core.filemode false

  1. 通過TortoiseGit的Setting配置
    右鍵-TortoiseGit-Settings,選擇左側列表框中的Git,然后在右側對話框中選擇Edit Local .git/config
    將下面配置項修改(filemode 改為 false)
[core]
  filemode = false
  1. 直接修改代碼倉庫 .git 目錄里的 config 文件的 filemode (在 [core] 段中)字段,將其改為 false。

如果要全局修改的話,加 --global 選項:

git config --global core.filemode false
或者通過TortoiseGit配置。

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.

通過上面修改之后,在命令行中調用git diff輸出的patch是正常的,但是在TortoiseGit的修改對話框中可能還是不對,如果一定要解決,建議把當前代碼修改備份下,重新pull一份就可以了。

參考:
[1] http://stackoverflow.com/questions/1257592/how-do-i-remove-files-saying-old-mode-100755-new-mode-100644-from-unstaged-cha


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM