Git學習筆記(持續更新)

Linux環境安裝Git

首先測試一下有沒有安裝Git,直接上代碼:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git//這個就是Linux下安裝的命令了

Windows 安裝Git

    1、官網下載安裝程序。
    2、開始菜單找到Git-->Git Bash,彈出黑窗口,安裝成功。
    3、安裝完成,進行設置

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

        //因爲Git是分佈式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。
        //注意git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

Git創建版本庫repository

$ mkdir gitrepository
$ cd gitrepository
$ pwd  //顯示當前目錄
/h/gitrepository
$ git init  //通過git init命令把這個目錄變成Git可以管理的倉庫
Initialized empty Git repository in H:/gitrepository/.git/  

//空的倉庫(empty Git repository)
//.git目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,不然改亂了,就把Git倉庫給破壞了    
//如果沒有看到.git目錄,那是因爲這個目錄默認是隱藏的,用ls -ah命令就可以看見

放截圖一張(碼的是我其他文件名。。)

文件添加到版本庫

    //所有的版本控制系統,其實只能跟蹤文本文件的改動,比如TXT文件,網頁,所有的程序代碼等等,Git也不例外。
    //千萬不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行爲來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行爲帶來的。
    //Notepad++的默認編碼設置爲UTF-8 without BOM     set-utf8-motepad++

寫一個readme.txt,內容:

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

 //一定要放到gitrepository目錄下(子目錄也行),因爲這是一個Git倉庫,放到其他地方Git再厲害也找不到這個文件。
    第一步,用命令git add告訴Git,把文件添加到倉庫:$ git add readme.txt
    第二步,用命令git commit告訴Git,把文件提交到倉庫:

    //簡單解釋一下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 is a distributed version control system.
Git is free software.

運行git status查看結果

//git status命令可以讓我們時刻掌握倉庫當前的狀態,上面的命令輸出告訴我們,readme.txt被修改過了,但還沒有準備提交的修改。

//雖然Git告訴我們readme.txt被修改了,但如果能看看具體修改了什麼內容,自然是很好的。比如你休假兩週從國外回來,第一天上班時,已經記不清上次怎麼修改的readme.txt,所以,需要用git diff這個命令看看:

 運行git diff查看結果

 git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式,可以從上面的命令輸出看到,我們在第一行添加了一個distributed單詞。

第一步add,然後查看狀態,commit,查看狀態,結果如圖

退回之前版本

再次修改文件,如下:

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

修改後提交

回想版本有如下的變化:

版本1:wrote a readme file

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

版本2:add distributed

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

版本3:append GPL

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

 用git log查看一下日誌(ps:沒有圈起來的是我弄着玩的,不重要)

如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數

 

 需要友情提示的是,你看到的一大串類似3a5436998...的是commit id(版本號),和SVN不一樣,Git的commit id不是1,2,3……遞增的數字,而是一個SHA1計算出來的一個非常大的數字,用十六進制表示,而且你看到的commit id和我的肯定不一樣,以你自己的爲準。爲什麼commit id需要用這麼一大串數字表示呢?因爲Git是分佈式的版本控制系統,後面我們還要研究多人在同一個版本庫裏工作,如果大家都用1,2,3……作爲版本號,那肯定就衝突了。

首先,Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,也就是最新的提交3a5436998...(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

現在,我們要把當前版本append GPL回退到上一個版本add distributed,就可以使用git reset命令:

看看readme.txt的內容是不是版本add distributed

果然被還原了。

git log再看看現在版本庫的狀態:

發現最新的那個版本append GPL已經看不到了,再想返回去怎麼辦

辦法其實還是有的,只要上面的命令行窗口還沒有被關掉,你就可以順着往上找啊找啊,找到那個append GPLcommit id1094adb...,於是就可以指定回到未來的某個版本:

版本號沒必要寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因爲Git可能會找到多個版本號,就無法確定是哪一個了。

再小心翼翼地看看readme.txt的內容:

果然,我胡漢三又回來了。

Git的版本回退速度非常快,因爲Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD從指向append GPL

 

改爲指向add distributed

 

 然後順便把工作區的文件更新了。所以你讓HEAD指向哪個版本號,你就把當前版本定位在哪。

現在,你回退到了某個版本,關掉了電腦,第二天早上就後悔了,想恢復到新版本怎麼辦?找不到新版本的commit id怎麼辦?

在Git中,總是有後悔藥可以吃的。當你用$ git reset --hard HEAD^回退到add distributed版本時,再想恢復到append GPL,就必須找到append GPL的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令:

從輸出可知,append GPL的commit id是3a5436998,現在就可以通過commit id返回任意一個版本。

 

更多內容請等待。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章