git作為一種版本控制解決方案,由於其具有的分散式特性,正被越來越多的使用者熟知,一些有名的開源專案,如:linux kernel,cakephp,ruby on rails等,都在使用git進行版本管理。
在git中,檔案狀態是一個非常重要的概念,不同的狀態對應不同的操作。因此,要想熟練掌握git的用法,需要了解git的幾種檔案狀態。
為了說明的方便,現在初始化一個專案,也就是將專案所在目錄納入git的管理之下。假設專案目錄為hello_world,初始化之後,在目錄下新建readme.txt檔案,接著,使用“git status”檢視檔案狀態,如圖:
可以看到,git友好的標示出readme.txt為“untracked files”,並且提示使用“git add ...”的命令將檔案包含到待提交清單中。按照提示,使用“git add readme.txt”命令,然後,使用“git status”檢視檔案狀態,如圖:
檔案readme.txt狀態變成了“changes to be committed”,也就是說readme.txt在暫存區域生成了快照,等待被提交。正如git所提示的那樣,通過“git rm --cached readme.txt”命令,可以將檔案狀態還原為未暫存狀態,即回到“untracked files”檔案狀態。現在,readme.txt已經可以被提交到git目錄中了,但是暫時不提交。開啟readme.txt,向其中加些內容,儲存之後,用“git status”檢視,返回如圖資訊:
可以看到,除了之前的“changes to be committed”狀態,現在又多了一條“changes not staged for commit”狀態,表明檔案已經修改,但是還沒有放入暫存區域,也就是沒生成快照。如果現在進行commit操作,只是將修改之前的檔案快照提交到了git目錄,一定記住:只有暫存區域的檔案(即:檔案狀態為“changes to be committed”)才會被提交。正如提示,通過“git add readme.txt”命令將已修改檔案更新到暫存區域中,如果想撤銷修改,可以使用“git checkout -- readme.txt”命令。
正如上文所說,git在未進行commit操作之前,存在三種狀態:untracked files,changes not staged for commit及changes to be committed,每種狀態之間可以隨意進行互相轉換。瞭解這三種狀態各自所對應的不同情況,能夠幫助你方便有效的使用git來管理專案。
Git中三種檔案狀態及其轉換
git作為一種版本控制解決方案,由於其具有的分散式特性,正被越來越多的使用者熟知,一些有名的開源專案,如 linux kernel,cakephp,ruby on rails等,都在使用git進行版本管理。在git中,檔案狀態是一個非常重要的概念,不同的狀態對應不同的操作。因此,要想熟練掌握git的...
Git中三種檔案狀態及其轉換
git作為一種版本控制解決方案,由於其具有的分散式特性,正被越來越多的使用者熟知,一些有名的開源專案,如 linux kernel,cakephp,ruby on rails等,都在使用git進行版本管理。在git中,檔案狀態是一個非常重要的概念,不同的狀態對應不同的操作。因此,要想熟練掌握git的...
Git中三種檔案狀態及其轉換
git作為一種版本控制解決方案,由於其具有的分散式特性,正被越來越多的使用者熟知,一些有名的開源專案,如 linux kernel,cakephp,ruby on rails等,都在使用git進行版本管理。在git中,檔案狀態是一個非常重要的概念,不同的狀態對應不同的操作。因此,要想熟練掌握git的...