Git速成學習第一課:建立版本庫與版本回退

Git速成學習筆記整理於廖雪峯老師的官網網站:https://www.liaoxuefeng.com/git

我太困了0.0精神點再寫......安全

 

/*我來啦!之後會陸續更新本身的學習筆記*/服務器

  Git是分佈式版本控制系統,尤爲是2008年,GitHub網站上線了,它爲開源項目免費提供Git存儲,無數開源項目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。app

先說集中式版本控制系統,版本庫是集中存放在中央服務器的,而幹活的時候,用的都是本身的電腦,因此要先從中央服務器取得最新的版本,而後開始幹活,幹完分佈式

活了,再把本身的活推送給中央服務器。中央服務器就比如是一個圖書館,你要改一本書,必須先從圖書館借出來,而後回到家本身改,改完了,再放回圖書館。學習

 

  • 分佈式版本控制與集中式版本控制系統有什麼不一樣呢?

  和集中式版本控制系統相比,分佈式版本控制系統的安全性要高不少,由於每一個人電腦裏都有完整的版本庫,某一我的的電腦壞掉了沒關係,網站

  隨便從其餘人那裏複製一個就能夠了。而集中式版本控制系統的中央服務器要是出了問題,全部人都無法幹活了spa

git config --global user.name "your name"
git config --global user.name "your email"

注意git config命令的--global參數,用了這個參數,表示你這臺機器上全部的Git倉庫都會使用這個配置,固然也能夠對某個倉庫指定不一樣的用戶名和Email地址。命令行

  • Class 1 . 建立版本庫
    • step1.建立新的空目錄
mkdir learngit
cd learngit
pwd 
/users/michael/learngit
    • step2.將目錄變成Git能夠管理的倉庫
git init
Initialized empty Git repository in /Users/michael/learngit/.git/

    若是你沒有看到.git目錄,說明這個目錄被默認隱藏,使用命令ls -ah能夠查看3d

    如今咱們編寫一個readme.txt,內容以下。

Git is a version control system.
Git is free software.

    必定要將readme.txt文本放到learngit目錄下(子目錄下也ok),由於這是一個git倉庫。

  • 第一步,用命令行告訴Git,把文件添加到倉庫。
$ git add readme.txt

  執行上面的命令,沒有任何顯示,就就是ok了。由於Unix十分哲學(大佬原話哈哈哈),沒有消息就是最好的消息。

  • 第二步,用命令行告訴GIt,把文件提交到倉庫。
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt
  • 註明:git commit命令中,-m後面輸入的是本次提交的說明,能夠輸入任意內容,固然最好是有意義的。
  • git commit 命令執行成功後會告訴你
    • 1 file changed : 1個文件被改動(咱們新添加的readme.txt)
    • 2 insertions : 插入兩行內容(readme.txt中有兩行內容)
    • 而後咱們須要明確一下爲何Git添加文件須要add、commit兩步呢?
      • 由於commit能夠一次提交不少文件因此你能夠屢次add不一樣的文件
      • git add file1.txt
        git add file2.txt file3.txt
        git commit -m "add 3 files"
  • 單元小結
    • 初始化一個Git倉庫,使用git init命令 
    • 添加文件到Git倉庫,分兩步:
      • 使用git add <files>,注意,能夠反覆屢次使用,添加多個文件
      • 使用命令git commit -m <message>,完成

 

  • Class 2 . 時光穿梭機
  • 2.1 版本回退

  如今你已經學會了修改文件,而後修改以前的readme.txt文件,而後提交到Git版本庫。

Git is a distributed version control system.
Git is free software distributed under the GPL.

  而後嘗試提交

$ git add readme.txt
$ git commit -m "append GPL"
>>[master 1094adb] append GPL
>>
1 file changed, 1 insertion(+), 1 deletion(-)

  這種不斷對文件進行修改,而後不斷提交到版本庫中,就比如存檔。若是有步驟出現錯誤從最近的commit恢復

  咱們如今已有的版本有:

  beta1:wrote a readme file

  beta2:add distributed

  beta3:append GPL

  固然咱們怎麼能記得幾千航的文件中都作了哪些更改。因此咱們須要版本控制來告訴咱們歷史記錄都有哪些。

  使用git log進行查看

$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:06:15 2018 +0800

    append GPL

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

  git log命令顯示的是最近到最遠的提交日誌,咱們從中能夠看到三次更改。

  若是嫌輸出的信息太多,咱們能夠嘗試加上--pretty=oneline參數

  如今咱們進行版本回退,準備把readme.txt回退到上一個版本,也就是add distributed的那個版本。

  首先Git必須知道當前版本是哪一個版本,在Git中,用HEAD表示當前版本,上一個版本用HEAD^表示,上上個版本就是HEAD^^

  如今咱們要作的就是把當前的版本append GPL回退到上一個版本add distributed,就可使用git reset命令了

$ git reset --hard HEAD^
>>HEAD is now at e475afc add distributed

  --hard參數的含義以後再講。咱們會看到如今的readme.txt內容已經變成上個版本的內容了。使用git log能夠查看如今版本庫的狀態

  • 可是最新的版本append GPL已經不見了該怎麼辦?

  只要上面的命令行窗口沒有關閉就能夠沿着上面一直找,知道找到那個append GPLcommit id是1094adb.....

$ git reset --hard 1094a
>>HEAD is now at 83b0afe append GPL

  版本號不須要寫全,前幾位就能夠,git會本身去找。

  Git的版本回退速度進行的很是快,由於Git內部有個指向當前版本的HEAD指針,當你回退版本的時候,

  Git僅僅是把HEAD指針從指向append GPL改成指向add distributed,而後順便把工做區改了。

  • 若是關機想恢復到新的版本該怎麼辦?找不到新版本的commit id該怎麼辦?

  在Git中,老是有後悔藥能夠吃的。當你用$git reset --hard HEAD^回退到add distributed版本時,

  再想恢復到append GPL,就必須找到append GPL的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令

$ git reflog
>>e475afc HEAD@{1}: reset: moving to HEAD^
>>1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
>>e475afc HEAD@{3}: commit: add distributed
>>eaadf4e HEAD@{4}: commit (initial): wrote a readme file

  從輸出能夠得出,append GPL的commit id是1094adb...,如今歡迎你回到新版本

  • 單元小結

  HEAD指向的版本就是當前的版本,使用命令git reset --hard commit_id

  git log能夠查看提交歷史,以肯定要回退到那個版本

  git reflog查看歷史命令,以便要肯定要回到將來那個版本

  

對你有幫助就支付寶請我喝可樂叭~~~

相關文章
相關標籤/搜索