1. 程式人生 > >git命令實列和解析

git命令實列和解析

一:建立版本庫

  1. 建立一個空目錄

$ mkdir fileName《其中fileName例如readme.txt》
$ cd fileName
$ pwd
《其中的pwd命令用於顯示當前的目錄》

例如我在我的E盤建立了一個Git_Practice資料夾
在這裡插入圖片描述
2. 把上面建立的目錄變成Git可以管理的倉庫

$ git init
《這步之後就會在現在的目錄中出現一個 .git 檔案》
《後面寫的檔案就要儲存在現在建立的目錄下》

我的接著上面的步驟如下
在這裡插入圖片描述
【上面說該倉庫現在是一個空的倉庫】
上面命令執行完後會產生一個.git檔案,該檔案是一個git可以進行管理的倉庫,我的如下
在這裡插入圖片描述


3. 將寫好的一些檔案新增到倉庫

$ git add fileName

例如我在記事本里面寫了個git_learn.txt檔案並把他儲存到Git_Exercises目錄下

  1. 將寫好的一些檔案提交到倉庫

$ git commit -m "explain this commit"
【其中-m後面的雙引號裡面寫的是對本次提交的說明,例如wrote a readme file,後續可以通過這個解釋來分辨每次被提交的檔案版本】

我的如下:
在這裡插入圖片描述

二:穿梭歷史

  1. 檢視當前倉庫的狀態

$ git status,《可以看當前檔案是否被修改或者被提交


下面出現的changes not staged for commit說明檔案被修改了並且還沒有被提交

例如我對我的檔案做了一次修改結果如下:
在這裡插入圖片描述
在這裡插入圖片描述
【上面說changes not staged for commit意思是還未被提交的修改,是在說我的檔案被修改了但是還沒有被提交】
2. 檢視檔案具體被修改的內容

$ git diff fileName

我的如下:
在這裡插入圖片描述
然後將修改後檔案提交
在這裡插入圖片描述
上面畫紅線部分是本次提交說明
然後再檢視檔案此時的狀態,如下:
在這裡插入圖片描述
上面說工作樹是乾淨的說明檔案已經被提交
3. 顯示所有的提交日誌

$ git log
或者 $ git log --pretty=oneline


檔案每次被修改後再次要提交時都需要$ git add fileName和$ git commit -m “explain this commit”

下面我又對檔案進行了修改並做了如上的提交:
在這裡插入圖片描述
在這裡插入圖片描述
下面開始檢視檔案的所有提交日誌
在這裡插入圖片描述
git log命令會顯示從最近到最遠的提交日誌,上面畫線的都是每次提交時的commit id(版本號),畫圈的都是每次提交的解釋說明(關鍵詞)

或者想看到更為簡潔一點的日誌提交資訊可以用以下命令,前面是commit id後面緊跟說明
在這裡插入圖片描述
4. 回到上一次寫的版本檔案

$ git reset --hard HEAD^
HEAD表示當前版本,HEAD ^ 表示上一個版本,HEAD^^表示上上個檔案,以此類推

例如我將我的檔案回到上一個版本也就是git material這一個版本
在這裡插入圖片描述
再開啟我的git_learn.txt檔案可以看到檔案由三行變成了兩行
5. 回到最新的版本

$ git reset --hard commit_id《commit_id是每個檔案的版本號,是一長串的十六進位制數字》

根據前面顯示的每次提交的版本號回到最新版本,如下:
在這裡插入圖片描述
然後再開啟檔案上面可以看到檔案又有了三行回到了最新版本

  1. 檢視所記錄的每一次的命令

$ git reflog

我的如下:
在這裡插入圖片描述
上面顯示了最近到最遠的每一次命令
7. 檢視檔案內容

$ cat fileName

我的如下:
在這裡插入圖片描述
8. 撤銷修改

(1)$ git checkout --fileName【撤銷沒有被add到暫存區.git 的修改】

我在這裡再一次對檔案內容做了一次修改並儲存,本次修改沒有被提交也就是該檔案沒有被放到.git暫存區,內容如下
在這裡插入圖片描述
然後使用撤銷修改命令如下:
在這裡插入圖片描述
從上面可以看到修改已被撤銷

(2)git reset HEAD fileName【撤銷被add到暫存區.git 的修改】

在這裡再修改一下檔案並提交到暫存區.git。如下
在這裡插入圖片描述
當使用上一步的用於撤銷沒有被提交到暫存區的修改的命令時可以看到檔案修改並沒有被撤銷,結果如下:
在這裡插入圖片描述
然後再來試一下新的撤銷命令git reset HEAD git_learn.txt,會將提交到暫存區.git 的修改給撤銷,如下:
在這裡插入圖片描述
此時回到工作區檔案狀態,但工作區修改還未被撤銷,所以可以看到上面最後一行 “ksbhjbjhvj” 還在,再使用git checkout – git_learn.txt命令,整個修改就會被撤銷。如下:
在這裡插入圖片描述
可以看到上面最後一行的 “ksbhjbjhvj” 已經不見

  1. 在檔案管理器中刪除檔案

(1)$ rm fileName【刪除工作區的檔案】

  1. 在版本庫中刪除檔案

$ git rm fileName【刪除提交到暫存區.git的檔案,提交到暫存區說明使用了git add fileName命令的】

三: 遠端倉庫

  1. 建立SSH Key

$ ssh-keygen -t rsa -C"[email protected]"《引號裡面例如:[email protected]

  1. 關聯遠端庫

$ git remote add origin [email protected]:yourAccount/learngit.git《其中yourAcconut是你在github上面註冊的賬戶,learngit是在github上面建立的倉庫名》

  1. 將本地庫的內容推送到遠端庫

$ git push -u origin master

  1. 從遠端庫克隆到本地庫

$ git clone [email protected]:yourAccount/gitskills.git

想更加詳細的學習git請參考[史上最淺顯易懂的Git教程]:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/