安裝Git
最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。
在Linux上安裝Git
? 首先,你可以試著輸入?git?,看看系統有沒有安裝Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
像這樣就表明沒有安裝git,安裝命令:?sudo apt-get install git?
當然你也可以在git官網上找到源碼進行安裝。官網地址:https://git-scm.com/
在Mac上安裝Git
有兩種安裝方法:
1.安裝homebrew后通過homebrew安裝Git,具體方法請參考homebrew的文檔:http://brew.sh/。
2.直接從AppStore下載Xcode。Xcode自帶git,注意:下載好后運行一次。才能安裝好。
在Windows上安裝Git
略,同時后面的筆記中也不記錄有關Windows相關的用法。請見諒。
?
安裝完成后,設置你的昵稱及郵箱。
bogon:hello zuxingyu$ git config --global user.name "zuxingyu" bogon:hello zuxingyu$ git config --global user.email "zuxingyu@gmail.com"
因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎么辦?這個不必擔心,首先我們相信大家都是善良無知的群眾,其次,真的有冒充的也是有辦法可查的。
注意?git config?命令的?--global?參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。
版本庫
創建版本庫
什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
所以,創建一個版本庫非常簡單,首先,選擇一個合適的地方,先創建一個空目錄:
bogon:Documents zuxingyu$ mkdir GitWorkSpace bogon:Documents zuxingyu$ cd GitWorkSpace/ bogon:GitWorkSpace zuxingyu$ pwd /Users/zuxingyu/Documents/GitWorkSpace
然后通過?git init?命令將此文件夾變為Git倉庫進行管理。
bogon:GitWorkSpace zuxingyu$ git init Initialized empty Git repository in /Users/zuxingyu/Documents/GitWorkSpace/.git/
可以通過?ls -a?命令查看到當前目錄結構
bogon:GitWorkSpace zuxingyu$ ls -a
. .. .git
?.git?是一個隱藏的目錄。里面的文件不做修改。
將文件添加至版本庫
我們可以寫一個?README?文件,放入版本庫中,內容如下:
this is my frist git file
I'm so excited
注:README文件一定要放在之前創建好的資源庫中。
第一步:將文件添加至版本庫中?git add README?
bogon:GitWorkSpace zuxingyu$ git add README
注:執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有消息就是好消息”,說明添加成功。
第二步:將文件提交至版本庫中?git commit README -m "frist version"?
bogon:GitWorkSpace zuxingyu$ git commit README -m "frist version" [master (root-commit) 5d9a431] frist version1 file changed, 2 insertions(+)create mode 100644 README
注:1.?git commit?命令中,?-m?后面的字符表示本次提交的說明,一般輸入的內容是修改了什么等等。雖然可以不寫,但強烈建議要寫上去。
2.?git add?和?git commit?分開的原因是,你一次修改的文件可能有很多個所以你可以add很多文件,但是commit就一次,把你add的文件全部提交上去,如下:
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
注:
1.如果你修改了一個文件后?git add?了,然后你又修改了該文件,那么?git commit?的時候添加的只是第一次修改的內容。因為只有?git add?之后才把修改的文件放入暫存區中(后面會說明),正確的做法是將所有要修改的文件都修改完成之后?git add?下,然后再?git commit?,如果你add之后又修改了,那么只能再add下了。? 2.如果你想撤銷之前修改的內容。可以使用:
bogon:GitWorkSpace zuxingyu$ git checkout -- README
來撤銷當前的修改,這時候再查看下版本庫里的內容時就會變成:
bogon:GitWorkSpace zuxingyu$ git status
On branch master
nothing to commit, working tree clean
3.如果你已經?git add?了,那么可以使用?git reset HEAD README?進行撤銷修改,意思就是版本回到最新版。
查看版本庫狀態
當我們在資源庫中修改了?README?文件后,我們可以通過?git status?來查看資源庫中文件的修改狀態
bogon:GitWorkSpace zuxingyu$ 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: READMEno changes added to commit (use "git add" and/or "git commit -a")
注:上面的文字已經告訴我們README這個文件已經被修改過了。
如果你已經忘記了之前修改了文件的哪里,可以通過?git diff?命令來查看文件的修改情況。
bogon:GitWorkSpace zuxingyu$ git diff README diff --git a/README b/README index a289834..745208d 100644 --- a/README +++ b/README @@ -1,2 +1,2 @@this is my frist git file -I'm so execute +I updated this file
注:?git diff?就是查看文件的不同。后面跟著的是文件名。-代表刪除,+代表添加。記得修改后?git add?和?git commit?下
版本回退
在實際操作中我們可能無法知道之前都提交了哪些版本,改了什么內容。這時候我們就需要用?git log?命令來查看之前的操作了。
bogon:GitWorkSpace zuxingyu$ git log commit eac61c6c7cae26dbb03acf08ca10359db9be9d34 Author: zuxingyu <zuxingyu@gmail.com> Date: Sat Nov 5 20:48:08 2016 +0800thridcommit f8cda47b31831bd42bceb59602145056f87623b2 Author: zuxingyu <zuxingyu@gmail.com> Date: Sat Nov 5 20:37:54 2016 +0800secondcommit 5d9a431a6a3aa47a3adee6bbdea167522e16ec55 Author: zuxingyu <zuxingyu@gmail.com> Date: Sat Nov 5 17:10:35 2016 +0800frist version
在這個log中我們可以看到我提交了兩個版本的內容,如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline
參數:
bogon:GitWorkSpace zuxingyu$ git log --pretty=oneline
eac61c6c7cae26dbb03acf08ca10359db9be9d34 thrid
f8cda47b31831bd42bceb59602145056f87623b2 second
5d9a431a6a3aa47a3adee6bbdea167522e16ec55 frist version
這里我們要說下幾個版本內容
第一版本:frist
this is my frist git file
I'm so execute
第二版本:second
this is my second git file
I updated this file
第三版本:third(最新)
this is my second git file
I updated this file
this is my thrid git file
現在我想把第三版本回退到第二版本。操作步驟如下:
?bogon:GitWorkSpace zuxingyu$ git reset --hard HEAD^?
注:
1.?HEAD?代表當前版本(本文中指第三版本),那上一個版本(第二版本)就是?HEAD^?,上上個版本就是?HEAD^^?,當然如果你要回退到前10個版本的時候寫?HEAD^……?這樣就不太好了。我們可以寫成?HEAD~10?
2.如果回退錯誤,想回到當前版本(本文中指第三版本),那就必須得記住當前版本的?commit id?,這個ID是提交時出現的。所以回到當前版本的辦法就是控制臺沒有關閉,我在提交第三個版本的時候?commit id?是?eac61c6?,所以我的命令是
bogon:GitWorkSpace zuxingyu$ git reset --hard eac61c6
HEAD is now at eac61c6 thrid
注:如果你提交版本后控制臺關閉了,可以通過?git reflog?命令找到?commit id?
bogon:GitWorkSpace zuxingyu$ git reflog eac61c6 HEAD@{0}: reset: moving to eac61c6 f8cda47 HEAD@{1}: reset: moving to HEAD^ eac61c6 HEAD@{2}: commit: thrid f8cda47 HEAD@{3}: commit: second 5d9a431 HEAD@{4}: commit (initial): frist version
在這里我們就發現最新版本的ID是?eac61c6?
工作區和暫存區
Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。
先來看名詞解釋。
工作區(Working Directory)
就是你在電腦里能看到的目錄,比如我的?GitWorkSpace?這個文件夾
就是一個工作區:
版本庫(Repository)
工作區有一個隱藏目錄?.git?,這個不算工作區,而是Git的版本庫。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master
,以及指向master
的一個指針叫HEAD
。
當我們將文件?git add?的時候,實際上就是將需要提交的文件放到了暫存區(Stage),不管?git add?幾次,都是提交到暫存區中。然后?git commit?的時候一次性提交到分支中去。
?
小結
本章節只是介紹了Git的安裝及簡單提交、回退方法。本筆記涉及到的命令有:
git init // 創建Git倉庫 git add file // 添加文件到git倉庫中 git commit -m "note" // 將添加或修改的文件提交到Git倉庫中 git status // 查看Git倉庫的狀態 git diff file // 查看文件的修改信息 git log // 查看Git倉庫中版本的提交日志 git log --pretty=oneline // 查看Git倉庫中版本的提交日志(簡略寫法) git reset --hard HEAD^ // 將文件回退到當前版本的前一個版本
東西不多但是也需要大家消化消化,下節筆記將介紹創建分支及遠程倉庫的相關內容。
?
參考網址:廖雪峰的官方網站
?