iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
0
自我挑戰組

Git學習筆記系列 第 19

git 區分大小寫

查詢區分大小寫設定狀態

我先透過指令查詢我的設定狀態

​$ git config -l | grep ignorecase 
core.ignorecase=true

發現我的設定預設為true,也就是不分大小寫

實驗1:git不分大小寫,透過OS檔案管理介面來重新命名大小寫

在這個情況下

建立一個bookinfo.txt的檔案

將他commit上去

接著去檔案總管或是其他OS內的檔案管理介面去重新命名這個檔案為BookInfo.txt

這時候去比對差異會發現git並沒有感覺到檔案被重新命名了而要我們將檔案的異動加到stage內

去異動該檔案的內容

發現我們下git status時,也還是把該檔案當作沒被異動大小寫的檔案

$ git status -s  
 M bookinfo.txt

實驗2:git不分大小寫,透過git mv來重新命名大小寫

現在回到檔案還沒重新命名的情況,此時git的設定還是不區分大小寫

嘗試著用原本就應該使用的git mv指令來重新命名

$ git mv bookinfo.txt BookInfo.txt
fatal: destination exists, source=bookinfo.txt, destination=BookInfo.txt

用fource參數也不行

$ git mv -f bookinfo.txt BookInfo.txt
fatal: bad source, source=bookinfo.txt, destination=BookInfo.txt

實驗3:git區分大小寫,透過OS檔案管理介面來重新命名大小寫

一樣先建立一個bookinfo.txt的檔案

接著commit上去

再透過OS檔案管理介面來重新命名大小寫

這時add後下git status,會發現git把重新命名的檔案當作一個新的檔案

​$ git status -s               
?? BookInfo.txt

​$ git add .                   

​$ git status -s               
A  BookInfo.txt

實驗4:git區分大小寫,透過git mv來重新命名大小寫

一樣先建立一個bookinfo.txt的檔案

接著commit上去

再透過git mv來重新命名大小寫

​$ git mv bookinfo.txt BookInfo.txt
fatal: destination exists, source=bookinfo.txt, destination=BookInfo.txt

若命名後的檔案放在同一個路徑下會發生無法重新命名的情況

因為git mv 認為這是同1個檔案

這時候我是下 -f 參數才可以成功重新命名

命名後用git status指令可以發現他是R(重新命名)

而不是識別為之前的A(新增檔案)

  • ' ' = unmodified

  • M = modified

  • A = added

  • D = deleted

  • R = renamed

  • C = copied

  • U = updated but unmerged

​$ git mv -f  bookinfo.txt BookInfo.txt

​$ git status -s                       
R  bookinfo.txt -> BookInfo.txt

​$ git commit -m 'change bookinfo to BookInfo'

這個情況下git就知道現在的BookInfo.txt就是之前的bookinfo.txt

官網說明大小寫設定


上一篇
format-patch製作patch及git am匯入patch
下一篇
git 基本中的基本
系列文
Git學習筆記31

尚未有邦友留言

立即登入留言