傳說中的git到底怎麼搞?安裝、檔案修改管理等

梭梭醬加油鴨發表於2019-03-03

以下筆記總結與廖雪峰的課程,感謝大佬,傳送門:www.liaoxuefeng.com

集中式 PK 分散式

  • 集中式版本庫存放於中央伺服器,分散式則每個人的電腦上都有完整的版本庫
  • 分散式安全性更高,因為參與者都有完整的版本庫,任何一個壞了都可以從別人那裡複製
  • 集中式要求參與者必須聯網,網速慢的時候很捉急,分散式則不需要
  • 分散式有個類似中央伺服器的電腦,但僅僅是用來交換大家的修改

如何安裝git?

  • git檢查系統是否安裝
  • 在Mac OS X上安裝Git:安裝homebrew,然後通過homebrew安裝Git,具體方法請參考homebrew的文件:http://brew.sh/
  • 安裝完成後,需輸入如下命令配置賬號:$ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
  • 注意,加了--global就意味著你電腦上的所有專案都是用這個賬戶

建立版本庫repository

  1. 建立版本庫
$ mkdir 檔名
$ cd 檔名
$ pwd //檢視工作區
複製程式碼
  1. 通過git init初始化這個版本庫,將這個檔案目錄變成可以管理的倉庫

提交檔案到倉庫

如果在本地工作區建了一個檔案,比如通過vim 檔名建一個檔案,如何提交到本地倉庫呢?

  1. git add .或者檔名.表示提交全部,檔名則只提交指定的
  2. git commit -m 日誌

如何掌握倉庫狀態?

  1. git status命令可以實時顯示倉庫狀態,比如:
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")
複製程式碼

上面的結果告訴我們readme.txt被修改過了,但還沒有準備提交的修改。

  1. git diff 檔名命令可檢視具體修改了什麼
$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
複製程式碼

從上面的命令輸出看到,我們在第一行新增了一個distributed單詞。

再使用git addgit commit -m後,使用git status即可檢視提交後的倉庫狀態,如果所有修改的檔案都被提交了,則可看見下方狀態:

$ git status
On branch master
nothing to commit, working tree clean
複製程式碼

如何回顧自己提交過的資訊?檢視每次提交的內容?

使用git log命令可列印從最近到最遠的提交日誌,如果嫌提交資訊太龐雜,可加上--pretty=oneline引數,日誌則會以行的形式展示:

$ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
複製程式碼

//最開始的一串數字是版本號

如何把某個檔案退回歷史版本?

  1. 使用git reset命令讓檔案回退版本
  2. 使用引數--hard HEAD^回退到上一個版本
  3. HEAD後面有幾個^代表回退幾個版本
  4. 也可以用HEAD~數字指定回退到具體版本

回退到歷史版本後怎麼再回來?

使用git reset --hard 版本號即可回到具體版本,但是,執行回退時的視窗一定不能關閉,否則就找不到未來的版本號了。

到了某個版本,如何檢視版本內容?cat 指定檔案即可檢視該檔案內容。

萬一手賤關閉了視窗或者電腦咋整? git reflog拯救你

!!!!關於工作區--暫存區--版本庫--add--commit:git diff 是隻比較比較工作區和暫存區(最後一次add)的區別,git diff --cached 是隻比較暫存區和版本庫的區別,git diff HEAD -- filename 是隻比較工作區和版本庫(最後一次commit)的區別。

如何撤銷修改?

  1. 情況一:只在工作區修改了,並未add及commit,可用git checkout -- filename指令撤銷
  2. 情況二:在工作區修改了,並add到了暫存區,可用git reset HEAD <file>把暫存區的修改撤銷掉,但是此時工作區仍然是修改了的,再使用情況一的方法即可完全撤銷修改。
  3. 既add又commit了,那就參考上面退回歷史版本

如何刪除檔案?

當你要刪除檔案的時候,可以採用命令:rm test.txt

這個時候(也就是說這個時候只執行了rm test.txt)有兩種情況

  1. 第一種情況:的確要把test.txt刪掉,那麼可以執行
                   git rm test.txt
                   git commit -m "remove test.txt"
                   然後檔案就被刪掉了
複製程式碼
  1. 第二種情況:刪錯檔案了,不應該刪test.txt,注意這時只執行了rm test.txt,還沒 有提交,所以可以執行git checkout test.txt將檔案恢復。

並不是說執行完git commit -m "remove test.txt"後還能用checkout恢復,commit之後版本庫裡的檔案也沒了,自然沒辦法用checkout恢復,而是要用其他的辦法。

相關文章