1. 程式人生 > >Git中三種文件狀態及其轉換

Git中三種文件狀態及其轉換

com att AD .com check 方案 方便 因此 ddl

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 <file>...”的命令將文件包含到待提交清單中。按照提示,使用“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中三種文件狀態及其轉換