五、文件操作
目錄:文件的4種狀態(tài)、忽略文件
1.文件的4種狀態(tài)
版本控制就是對文件的版本控制,要對文件進行修改、提交等操作。首先要知道文件當前在什么狀態(tài),不然可能會提交了目前還不想提交的文件,或者需要提交的文件沒提交成功。
- Untracked: 未跟蹤,此文件在文件夾中,但并沒有加入到Git庫,不參與版本控制。通過git add狀態(tài)變?yōu)镾taged。
- Unmodify: 文件已經(jīng)入庫,未修改,即版本庫中的文件快照內(nèi)容與文件夾中完全一致。這種類型的文件有兩種去處,如果它被修改,而變?yōu)镸odified;如果使用git rm移出版本庫,則成為Untracked文件。
- Modified: 文件已修改,僅僅是修改,并沒有進行其他的操作。這個文件也有兩個去處,通過git add可進入暫存staged狀態(tài);使用git checkout則丟棄修改過,返回到 unmodify 狀態(tài),這個git checkout即從庫中取出文件,覆蓋當前修改。
- Staged: 暫存狀態(tài)。執(zhí)行g(shù)it commit則將修改同步到庫中,這時庫中的文件和本地文件又變?yōu)橐恢?,文件?Unmodify狀態(tài)。執(zhí)行g(shù)it reset HEAD filename取消暫存,文件狀態(tài)為Modified。
通過如下命令,可以查看文件狀態(tài):
#查看指定文件狀態(tài)
git status [filename]
#查看所有文件狀態(tài)
git status
常用的2個命令操作:
#添加所有文件到暫存區(qū)
git add .
#提交暫存區(qū)中的內(nèi)容到本地倉庫,可以加上-m和提交信息
git commit -m
2.忽略文件
有些時候不想把某些文件納入版本控制中,比如數(shù)據(jù)庫文件、臨時文件、設(shè)計文件等。
在主目錄下建立".gitignore"文件,此文件有如下規(guī)則:
①忽略文件中的空行或以井號(#)開始的行將會被忽略。
②可以使用Linux通配符。例如:星號(*)代表任意多個字符,問號(?)代表一個字符,方括號([abc])代表可選字符范圍,大括號({string1,string2,...})代表可選的字符串等。
③如果名稱的最前面有一個感嘆號(!),表示例外規(guī)則,將不被忽略。
④如果名稱的最前面是一個路徑分隔符(/),表示要忽略的文件在此目錄下,而子目錄中的文件不忽略。
⑤如果名稱的最后面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非文件(默認文件或目錄都忽略)。
例:
*.txt #忽略所有 .txt結(jié)尾的文件
!lib.txt #但lib.txt除外
/temp #僅忽略項目根目錄下的TODO文件,不包括其它目錄
temp build/ #忽略build/目錄下的所有文件
doc/*.txt #會忽略doc/notes.txt,但不包括doc/server/arch.txt