[英]Git on OS X: pre-modified files?
我在OS X上使用Git,特別是龐大的Linux存儲庫。 問題:當我檢出特定分支時,當我希望有一個干凈的目錄樹時,我會發現已經有修改過的文件:
mbpe:linux griscom$ git checkout --force 6407198
HEAD is now at 6407198... sdhci: add no-sd-uhs-sdr104 devicetree property
mbpe:linux griscom$ git status
HEAD detached at 6407198
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: include/uapi/linux/netfilter/xt_connmark.h
modified: include/uapi/linux/netfilter/xt_dscp.h
modified: include/uapi/linux/netfilter/xt_mark.h
modified: include/uapi/linux/netfilter/xt_rateest.h
modified: include/uapi/linux/netfilter/xt_tcpmss.h
modified: include/uapi/linux/netfilter_ipv4/ipt_ecn.h
modified: include/uapi/linux/netfilter_ipv4/ipt_ttl.h
modified: include/uapi/linux/netfilter_ipv6/ip6t_hl.h
modified: net/netfilter/xt_dscp.c
modified: net/netfilter/xt_hl.c
modified: net/netfilter/xt_rateest.c
modified: net/netfilter/xt_tcpmss.c
no changes added to commit (use "git add" and/or "git commit -a")
mbpe:linux griscom$
這是真正有趣的部分:如果我嘗試擺脫這些“修改過的”文件,則會得到一組新的修改過的文件,其中某些字符大小寫已更改:
mbpe:linux griscom$ git reset --hard
HEAD is now at 6407198 sdhci: add no-sd-uhs-sdr104 devicetree property
mbpe:linux griscom$ git status
HEAD detached at 6407198
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: include/uapi/linux/netfilter/xt_CONNMARK.h
modified: include/uapi/linux/netfilter/xt_DSCP.h
modified: include/uapi/linux/netfilter/xt_MARK.h
modified: include/uapi/linux/netfilter/xt_RATEEST.h
modified: include/uapi/linux/netfilter/xt_TCPMSS.h
modified: include/uapi/linux/netfilter_ipv4/ipt_ECN.h
modified: include/uapi/linux/netfilter_ipv4/ipt_TTL.h
modified: include/uapi/linux/netfilter_ipv6/ip6t_HL.h
modified: net/netfilter/xt_DSCP.c
modified: net/netfilter/xt_HL.c
modified: net/netfilter/xt_RATEEST.c
modified: net/netfilter/xt_TCPMSS.c
no changes added to commit (use "git add" and/or "git commit -a")
mbpe:linux griscom$
到底他媽發生了什么???
答案是:默認的OS X文件系統不區分大小寫(盡管保留大小寫),並且Linux存儲庫中有許多對文件,只是大小寫不同。 實際上,以上兩個文件列表正是存儲庫中大小寫沖突的文件對。
因此,git認為有兩個文件,而OS X文件系統認為只有一個。 在檢出所有文件的過程中,這兩個文件彼此重疊,並且當檢查更改時,git將其視為每對文件中的一個更改。 重置存儲庫時,每對的“已修改”文件都是未修改的,但這不可避免地會修改先前的“未修改”文件。
這帶來了兩個學術問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.