1. 程式人生 > >GIT常用命令(一)

GIT常用命令(一)

1、建立版本庫

版本庫可以理解成GIT管理的目錄,GIT能追蹤裡面每一個檔案的增加,修改,刪除。建立版本庫的命令只需要一行,在相應的目錄下里,點選滑鼠右鍵會出現Git Bash Here,點選進入命令列,輸入git init 完成初始化。git就會跟蹤這個目錄下所有的檔案。

如下,顯示建立成功。

$ git init
Initialized empty Git repository in F:/gitlearn/test/.git/

2、將檔案新增到版本庫中

接下來就要將我們需要的跟蹤的檔案新增到版本庫中,這裡一共需要兩步。

新建一個test.txt的檔案,內容為 add file 

第一步,將檔案新增到快取區,git add test.txt

第二步,將檔案提交到倉庫,git commit -m "add file"

程式碼的執行過程如下,其中,git commit -m " "雙引號裡面的內容,是要描述本次提交都做了哪些修改,畢竟我們也的程式碼也要給別人看,讓別人清楚的知道我們本次提交幹了什麼很重要。

[email protected] MINGW64 /f/gitlearn/test (master)
$ git add test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ cat test.txt                                       //顯示檔案內容
add file
[email protected]
MINGW64 /f/gitlearn/test (master) $ git commit -m "add file" [master (root-commit) aa76a9a] add file 1 file changed, 1 insertion(+) create mode 100644 test.txt

在這裡很多人會有疑問,為什麼git提交的時候,要分兩步,這樣豈不是很麻煩,這兩步都幹了什麼,先來看一張圖:

   (轉載自廖雪峰的部落格,我會在文末新增連結)

我們存放檔案的目錄是工作區,在我們輸入add命令之後,是將檔案新增到暫存區中,就是圖中的stage中,再次commit的時候才會新增到版本庫中。

3、版本回退

現在,我們已經學會如何把修改提交到了暫存區和版本庫裡面。但是在開發中,我們經常會有想回到某個版本的時候,我們應該如何做呢?

我們先做一些準備

工作,新建test.txt文字檔案,依次輸入A、B、C並提交到版本庫。

[email protected] MINGW64 /f/gitlearn/test (master)
$ git add test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ git commit -m "add A"
[master 4543fae] add A
 1 file changed, 1 insertion(+), 1 deletion(-)

[email protected] MINGW64 /f/gitlearn/test (master)
$ git add test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ git commit -m "add B"
[master a444e62] add B
 1 file changed, 1 insertion(+), 1 deletion(-)

[email protected] MINGW64 /f/gitlearn/test (master)
$ git add test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ git commit -m "add C"
[master d85795c] add C
 1 file changed, 1 insertion(+), 1 deletion(-)

[email protected] MINGW64 /f/gitlearn/test (master)
$

輸入git log 可以檢視最近的提交記錄,如果想讓提交記錄簡單一點,可用如下的命令,可以看到記錄非常清晰。

其中,前面的一堆字母和數字的組合是版本號,版本回退的時候,就依靠這個。在Git中當前版本是HEAD,上一個版本是HEAD^

,上兩個版本是HEAD^^,上100個版本為HEAD~100

$ git log --pretty=oneline
d85795cd86774b556c24f287cad44bbbcf204518 (HEAD -> master) add C
a444e6238d0955528a52a7e53e54351ffbde7e26 add B
4543fae6169effbc8b35b948a06a1c687817902c add A

現在,我們要回到add B的版本,如下,輸出文字內容為B,這個時候我們用git log輸出版本號,發現add C 版本已經沒了。如果,你還沒有關命令視窗,找到add C的版本號,可以直接回去,但是大多數情況下,我們是找不到版本號的。幸好git記錄每一次命令。

[email protected] MINGW64 /f/gitlearn/test (master)
$ git reset --hard HEAD^
HEAD is now at a444e62 add B

[email protected] MINGW64 /f/gitlearn/test (master)
$ cat test.txt
B

輸入git reflog 可以看到版本號,直接回到相應的版本。

$ git reflog
a444e62 (HEAD -> master) [email protected]{0}: reset: moving to HEAD^
d85795c [email protected]{1}: commit: add C
a444e62 (HEAD -> master) [email protected]{2}: commit: add B
4543fae [email protected]{3}: commit: add A

[email protected] MINGW64 /f/gitlearn/test (master)
$ git reset --hard d8579
HEAD is now at d85795c add C

[email protected] MINGW64 /f/gitlearn/test (master)
$ cat test.txt
C

4、撤銷修改

有的時候,我們提交完申請之後,想要撤回自己的修改。下面是具體的操作:

1>當修改工作區的程式碼的時候,想放棄修改,直接git checkout -- file,如下圖,想刪除工作區的GIT,輸入命令,可以直接刪除。

$ cat test.txt
Git
GIT
[email protected] MINGW64 /f/gitlearn/test (master)
$ git checkout -- test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ cat test.txt
Git

2>當修改完了工作區的程式碼,還提交到了暫存區,先git reset HEAD file 然後回到第一步

現在檔案裡面是三個GIT疊加,先用reset丟棄快取區的修改,再用checkout丟棄工作區的修改。

[email protected] MINGW64 /f/gitlearn/test (master)
$ git reset HEAD test.txt
Unstaged changes after reset:
M       test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ git checkout -- test.txt

[email protected] MINGW64 /f/gitlearn/test (master)
$ cat test.txt
Git
GIT

3>如果已經提交了版本庫,參考版本回退

5、刪除檔案

在刪除檔案的時候,我們只是在工作區裡面刪除了,導致工作區和版本庫不一致。

$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    test.txt

no changes added to commit (use "git add" and/or "git commit -a")

這個時候,有兩種操作,第一種操作是誤刪

直接checkout檔案就恢復了

$ git checkout -- test.txt

第二種操作是,確實想在版本庫裡刪除,如下,先用git rm test.txt刪除,然後提交。

[email protected] MINGW64 /f/gitlearn/test (master)
$ git rm test.txt
rm 'test.txt'

[email protected] MINGW64 /f/gitlearn/test (master)
$ git commit -m "remove test.txt"
[master 49d4aec] remove test.txt
 1 file changed, 2 deletions(-)
 delete mode 100644 test.txt

掌握這些命令,就可以在自己的電腦上操作Git了,然而,我們還要學習如何將程式碼託管到Github上,以及如何學會多人協作。

參考部落格: