首先安裝 Git,Git 官網 會推薦適合自己系統的安裝包,網速慢的同學可以去百度網盤下載 Git-2.21.0-64-bit Windows 版本 提取碼:tz9d。
通過幾天的學習,熟悉了 git 的一些常用命令,要用熟練和操作更復雜的功能還必須繼續學習。不過 git 作為工具,它是用來提高我們的工作效率的工具,系統的學習之后可以暫且放放,等到以后實際項目中用到了不會的東西再來問專家或通過搜索引擎查詢解決辦法。
這篇文章僅供自己以后翻閱加深記憶,要系統的學習 git 教程(中文版),請移步到 liaoxuefeng.com 學習 git 教程部分。
我使用的是 windows 系統,所以使用 Git Bash 輸入命令。首先,全部命令,再實例結合命令:
一、命令:
1. 顯示當前的目錄,pwd (Print Working Directory)
$ pwd
2. 進入指定目錄,cd (Change Directory)
$ cd
3. 返回到上一級目錄
$ cd ..
4. 配置
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
5. 創建空目錄,mkdir
$ mkdir
6. 初始化該目錄
$ git init
7. 把文件添加到倉庫
$ git add <filename>
一次添加多個文件(添加新文件和編輯過的文件不包括刪除的文件)
$ git add .
8. 把文件提交到倉庫
$ git commit -m "added one line"
9. 查看狀態
$ git status
10. 查看修改內容
$ git diff
如果想要查看兩次提交的差異(具體修改了哪些文件):
$ git diff bash1 bash2 --stat
如果想要查看兩次提交的差異中,修改的文件中具體修改了哪些內容的話:
把 --stat 換成具體的文件就行了。
$ git diff bash1 bash2 <filename>
這兩個命令非常有用,有這樣一些場景:
一、如果你改了很多文件,同時 commit 提交了,但是沒有網絡無法 push 到遠程。或許你需要同事幫忙,他們幫你更改這些文件然后 push 到遠程。你沒有網絡不可能直接把文件發給他們,所以就需要知道具體更改了哪些文件,然后知道改動的文件改了哪些內容。讓他們添加上,然后commit和push,你自己撤銷你所做的更改。
二、如果有兩個很相似的系統,需要移植你所做的更改,但是你不可能直接復制替換源文件,因為這樣也會引起沖突或者覆蓋掉原本不同的地方。這個時候就需要知道更改了哪些內容,然后每一個文件移植過去。
11. 顯示提交歷史
$ git log
用一行顯示提交歷史
$ git log --pretty=oneline
12. 版本回退(回退到上一版本)
$ git reset --hard HEAD^
回退到指定版本
$ git reset --hard <commit id>
13. 查看更改歷史(包括添加、提交、刪除、撤銷...)
$ git reflog
14. 查看文件內容
$ cat <filename>
15. 撤銷修改(未添加到暫存區)
$ git checkout -- <filename>
16. 撤銷修改(已添加到暫存區)
$ git reset HEAD <filename>
$ git checkout -- <filename>
17. 撤銷修改(已提交到版本庫)
$ git reset --hard HEAD^ $ git reset HEAD <filename> $ git checkout -- <filename>
18. 刪除文件(刪除工作區的文件)
$ rm test.txt
徹底刪除文件,同時刪除版本庫里的文件
$ rm <filename> $ git rm <filename> $ git commit -m "deleted a file"
二、實例結合命令
1. 顯示當前的目錄,pwd (Print Working Directory)
$ pwd

當前目錄是 /c/User/Administrator,也就是說,我的 Git Bash 應用安裝在這個目錄下?
2. 進入指定目錄,cd (Change Directory)
$ cd

這個 bootstrap 是我從 https://github.com/twbs/bootstrap (bootstrap 在 github 上的主頁) "Fork" 到自己的賬號下后克隆到本地的。我選擇的是 “v4-dev” 這個分支,所以后面會有 /bootstrap (v4-dev) 這樣的字符出現。
3. 返回到上一級目錄
$ cd ..

輸入 "cd .." 然后回車,當前目錄從 "/c/Users/Administrator/bootstrap/dist" 變成了 "/c/Users/Administrator/bootstrap"。"cd" 與 ".." 之間有一個空格。
4. 配置
$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"

配置的目的,表示我的這台電腦使用的是 "xinjie-just" 這個賬號。
5. 創建空目錄,mkdir
$ mkdir

執行該命令后,在我的根目錄下就新增了一個文件夾 running:

6. 初始化該目錄,將該目錄變成 git 可以管理的倉庫:
$ cd running $ git init Initialized empty Git repository in C:/Users/Administrator/running/.git/

首先進入該倉庫,然后將其初始化,init(initialization)。
7. 把文件添加到倉庫
$ git add <filename>
我在本地添加了一個新文件 readme.txt,然后添加了一段話。

$ git add .
一次添加多個文件(添加新文件和編輯過的文件不包括刪除的文件) :

8. 把文件提交到倉庫
$ git commit -m "added one line"

"-m" 后面的 "added one line" 為注釋,解釋這次提交的意圖,可任意填寫容易理解的話。
添加文件到Git倉庫,分兩步:
第一步,使用命令 git add <filename>,注意,可反復多次使用,添加多個文件;
第二步,使用命令 git commit,完成。
9. 查看狀態
$ git status

結果告訴我們,在 master 分支上,沒有東西需要提交,工作目錄是干凈的。
10. 查看修改內容
$ git diff

在上次我提交文件后,在最后添加了空行和一段話。diff 是 difference(改變) 的縮寫。
11. 顯示提交歷史
$ git log
$ git log --pretty=oneline

使用 git log 可顯示更改歷史,包括了版本號、作者、日期、提交注釋。使用 git log --pretty=oneline 會用一行顯示一條歷史記錄,看起來更清晰明了。
12. 版本回退
$ git reset --hard HEAD^
HEAD 表示當前版本號,HEAD^ 表示上一個版本號,HEAD^^表示上兩個版本號,與 HEAD~2 意思相同。

這里回到上一版本。
回退到指定版本,還有更快捷的方法。
$ git reset --hard <commit id>

這里使用版本號回到上一版本。
13. 查看文件內容
$ cat <filename>
如上(12點) cat readme.txt 查看文件內容。
14. 查看更改歷史
$ git reflog

查看更改歷史,不僅僅是提交歷史。包括了添加版本、版本回退、撤銷修改等等。
15. 撤銷修改(未添加到暫存區)
$ git checkout -- <filename>

我在 readme.txt 中添加了一行,然后使用 cat readme.txt 顯示其內容,隨后使用 git checkout -- readme.txt 將其撤銷,再使用 cat readme.txt 顯示內容。
使用這種命令有一個前提,是還沒有使用 git add 將文件添加到暫存區。
16. 撤銷修改(已添加到暫存區)
$ git reset HEAD <filename>

我在 readme.txt 文件中添加了配速這一行。然后驗證 git reset HEAD readme.txt 這個命令:
1. 使用 git add readme.txt 命令將文件提交到暫存區;
2. 使用 git reset HEAD readme.txt 命令撤銷暫存區里的新內容;
3. 使用 git checkout -- readme.txt 命令將工作區里的內容和暫存區里的內容保持一致(即撤銷工作區最近的一次修改)。
17. 撤銷修改(已經提交到倉庫)
如果已經將修改提交到倉庫了,而要撤銷這次修改,需要分三步完成:
第一步:返回到上一版本庫,使用命令 git reset --hard HEAD^ ;
第二步:撤銷暫存區里的修改,使用命令 git reset HEAD readme.txt ;
第三步:撤銷工作區里的修改,使用命令 git checkout -- readme.txt 。
$ git add readme.txt $ git commit -m "added Foot Strike" [master a7ab6d5] added Foot Strike 1 file changed, 3 insertions(+), 1 deletion(-) $ git status On branch master nothing to commit, working directory clean $ git reset --hard HEAD^ HEAD is now at 9110ce6 added Warm Up $ git reset HEAD readme.txt $ git checkout -- readme.txt $ git status On branch master nothing to commit, working directory clean

18. 刪除文件,rm (remove)
rm 准確一點兒的理解是移除,暫時看不見了,實際上還存在。可以選擇直接在文件管理器中將其刪除,但是那樣的刪除是將文件放到了回收站,等待你下一步操作(還原或徹底刪除)。但是這里選擇用 git 命令刪除。
$ git rm test.txt
新建了一個用來操作 git 刪除命令的測試文件 test.txt 。然后使用 git rm test.txt 將其刪除。

從上圖中可以看出,我主要操作了四步:
第一步:根據 git status 提示,我有一個文件需要添加進暫存區,於是我添加然后提交到了版本庫里;
第二步:使用 rm test.txt 刪除了工作區里的 test.txt 文件;
第三步:根據 git status 提示,我進行了一項刪除操作 "deleted: test.txt",需要進一步選擇操作命令,使用 git add/rm test.txt 命令去更新將要被提交的操作,或者使用 git checkout -- test.txt 去忽略工作區里的改變(第二步中的刪除)。於是我選擇了 git rm test.txt 徹底刪除了工作區的 test.txt 文件(就好像在文件管理器里刪除文件后,需要去回收站里徹底刪除或還原文件一樣,只是用 git 命令刪除的文件放在了 git 倉庫為我們准備的一個回收站里,我們看不見)。
第四步:使用 git commit -m "deleted test.txt" 將刪除操作提交到倉庫。
擴展:
有一種情況是刪錯了。所以需要恢復,或者說撤銷刪除。
我在 test.txt 文件同一路徑下新建了 test-rm-checkout.txt 文件,用來測試撤銷刪除操作。


從上圖中可以看出,在使用 rm test-rm-checkout.txt 命令刪除文件后,我試圖使用 cat test-rm-checkout.txt 命令進入被刪除的文件看內容,被提示"沒有這樣的文件"。當我使用 git checkout -- test-rm-checkout.txt 撤銷刪除后,再次使用 cat test-rm-checkout.txt 命令進入被刪除的文件看內容時,可以查看了,證明文件又回來了(只是里面沒有內容,顯示為空白而已)。
