1. 程式人生 > >git基礎命令詳解

git基礎命令詳解

一些必須要知道的概念

git的三個工作區域:工作目錄、暫存區、git倉庫。

工作目錄:其實就是本地檔案磁碟上的檔案或目錄;

暫存區:是一個檔案,儲存了下次提交的檔案列表資訊,一般在git倉庫目錄中;

git倉庫:就是儲存專案或檔案的元資料和物件資料庫的。其中包含了你提交給git的所有完整版本庫。

基本的git工作流程如下:

  1. 在工作目錄中修改檔案。

  2. 暫存檔案,將檔案的快照放入暫存區域。

  3. 提交更新,找到暫存區域的檔案,將快照永久性儲存到 Git 倉庫目錄。

建立一個git倉庫

git init

進入你想要讓git管理的目錄,執行上面的命令,便初始化了一個git倉庫。
這時,會在該目錄下建立一個名為.git子目錄,.git子目錄下的檔案其實就是git倉庫的主要檔案,一般不建議手動修改或刪除它。

另外也可以從遠端clone一個倉庫到本地。
一般地,可以從github上clone一個你關注的專案下來。

git clone [url]

例如:git clone https://github.com/git/git.git

在git倉庫中的一些基本操作

下面結合一個具體例項進行操作。
1、新建一個檔案README.md,並交給git倉庫管理。

可以看到我在mytestgit目錄下先執行了git init 命令初始化了一個倉庫。
然後新建了一個README.md檔案。
此時,可以使用git status命令檢視倉庫狀態。

可以看到有一個標紅的檔案是提示Untracked files,意思是還未交給git倉庫跟蹤管理,而且提示你可以使用git add

命令來新增。

使用git add命令將檔案新增到暫存區中。

git add README.md

繼續使用git status命令檢視狀態

狀態顯示,當前在master分支,還未有過提交。提示下面綠色的檔案可以提交或者從暫存區刪除。

接下來,我們在新建一個test.txt檔案,並使用git add命令交給git倉庫跟蹤。然後修改該檔案,再檢視狀態。

出現在 Changes not staged for commit 這行下面的test.txt檔案內容發生了變化,但是還未提交到暫存區中。如果要暫存這次修改,則需要繼續執行git add命令。
因此,可以看到git add命令是多功能的,可以用它開始跟蹤新檔案,還能用它將已跟蹤的檔案再次放到暫存區中(即更新暫存區中的內容)。

2、使用git commit命令提交檔案到git倉庫
將上個步驟的兩個檔案我們提交到git倉庫。

git commit -m "第一次提交新增了兩個檔案"


可以看到,提交後它會告訴你,當前是在哪個分支(master)提交的,本次提交的完整 SHA-1 校驗和是什麼(18350c3),以及在本次提交中,有多少檔案修訂過,多少行新增和刪改過。

請記住,提交時記錄的是放在暫存區域的快照。 任何還未暫存的仍然保持已修改狀態,可以在下次提交時納入版本管理。 每一次執行提交操作,都是對你專案作一次快照,以後可以回到這個狀態,或者進行比較。

另外有一種方法可以跳過使用git add新增到暫存區然後再提交的方式。
即只要在提交的時候,給 git commit 加上 -a 選項,Git 就會自動把所有已經跟蹤過的檔案暫存起來一併提交,從而跳過 git add 步驟:
我們再次修改了test.txt檔案,然後使用-a選項直接commit。

移除檔案的操作

一種情況是從git倉庫移除檔案,同時刪除磁碟上目錄上的檔案。
使用git rm完成,我們刪除test.txt檔案看下。

可以看到test.txt檔案已經從被刪除了。刪除之後再使用git commit提交刪除。

另外一種情況是,我們只想從git倉庫中刪除,但是仍然保留當前工作目錄中的檔案。可以使用--cached選項實現。
例如我們將版本庫中的111.txt檔案從版本庫中刪除,但是磁碟上的檔案任然保留。

檢視提交的歷史記錄

使用git log命令。

預設不用任何引數的話,git log 會按提交時間列出所有的更新,最近的更新排在最上面。 正如你所看到的,這個命令會列出每個提交的 SHA-1 校驗和、作者的名字和電子郵件地址、提交時間以及提交說明。

git log 有許多選項可以幫助你搜尋你所要找的提交, 接下來我們介紹些最常用的。

一個常用的選項是 -p,用來顯示每次提交的內容差異。 你也可以加上 -2 來僅顯示最近兩次提交:

還有--stat 選項在每次提交的下面列出所有被修改過的檔案、有多少檔案被修改了以及被修改過的檔案的哪些行被移除或是添加了。 在每次提交的最後還有一個總結。

git log 的常用選項說明

撤銷操作

1、工作區程式碼的撤銷。
檔案還未add到暫存區域,此時做出的修改可以通過git checkout -- <file>命令來撤銷修改。

2、add到暫存區的程式碼想撤銷
使用git reset HEAD <file>命令從暫存區撤銷到工作區,然後再從工作區撤銷。

3、提交到git倉庫的程式碼回退
使用命令git reset --hard <版本號>