Git(全局信息追蹤器)。 Git是一個分佈式版本控制工具,Git的使用中倉倉庫不是必須的,用戶本地就是一個完整的版本倉庫,代碼的前進、回退、刪除等等操做均可以直接在本地進行,不須要中央倉庫。可是,在實際操做中,爲了可以和其餘同事快速溝通以及合併代碼,通常仍是會搭建一箇中央倉庫。Git對分支的管理很是友好,能夠快速建立或者合併分支。 Svn集中式的版本控制工具,Svn中,必需要有中央倉庫,全部的版本信息都保存在中央倉庫中,代碼的前進、回退、刪除等等操做都須要在中央倉庫中進行,用戶本地保存的只是版本倉庫的一個副本,Svn中的分支很是臃腫。git
git官網windows
雙擊安裝、一直默認安裝就能夠了分佈式
安裝後在開始中會出來git的相關菜單 工具
同時鼠標右鍵也有git的相關菜單選項 編碼
安裝成功咱們還要進行我的信息的設置 輸入以下命令:版本控制
git config --global user.name "pengs" git config --global user.email "694835275@qq.com "
也能夠到指定的文件夾下面右擊 指針
經過git init命令把這個目錄變成Git能夠管理的倉庫,建立成功後在該文件夾下會多出一個.git的文件夾。日誌
git init
Git目錄是用來來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裏面的文件,否則改亂了,就把Git倉庫給破壞了。code
<font color="red">注意</font> 在window系統中,編輯文件不要使用記事本操做,由於在操做中文的時候會有問題,推薦用Notpad++,可是編碼方式得設置下。 blog
執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是「沒有消息就是好消息」,說明添加成功
$ git commit -m "第一次提交" [master (root-commit) d3e411b] 第一次提交 1 file changed, 1 insertion(+) create mode 100644 hello.txt
commit -m的-m後面跟的是本次操做的備註說明信息。最好是有意義的,也就是下次看到這個說明就清楚提交了什麼內容。
爲何Git添加文件須要add,commit一共兩步呢?由於commit能夠一次提交不少文件,因此你能夠屢次add不一樣的文件
|命令| 說明| |--|--| |git status |查看當前庫的狀態 | |git diff | 是difference的簡寫是用來查看文件的變化的 (工做區和版本庫) |
hello git hello git pszzzz
注意: 沒有執行git add命令
$ 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: hello.txt no changes added to commit (use "git add" and/or "git commit -a")
狀態信息告訴咱們read.txt文件被修改了,可是尚未被提交
$ git diff warning: LF will be replaced by CRLF in hello.txt. The file will have its original line endings in your working directory diff --git a/hello.txt b/hello.txt index 7b5bbd9..4f59ef0 100644 --- a/hello.txt +++ b/hello.txt @@ -1 +1 @@ -hello Git +hello Git pszzzz
經過此命令咱們可以看到增長的是 hello git 2這行信息,知道了對readme.txt做了什麼修改後,再把它提交到倉庫就放心多了,提交修改和提交新文件是同樣的兩步 git status告訴咱們,將要被提交的修改包括readme.txt,下一步,就能夠放心地提交了
Git告訴咱們當前沒有須要提交的修改,並且,工做目錄是乾淨(working tree clean)的
| 命令|說明 | |--|--| | git status | 查看當前庫的狀態,add以前和commit以前均可以查看狀態 | | git diff 文件名| 查看文件修改先後的變化,在add命令以前執行 |
剛剛咱們對hello.txt文件執行兩次操做,咱們還能記得住咱們作了什麼操做,可是當咱們操做了一段時間後,修改的愈來愈多,那麼咱們就會忘記不少之前的操做。這時咱們能夠經過log命令來查看歷史信息
$ git log hello.txt commit c0dfa343063650dfc07ed264345ee342a64a4fd7 (HEAD -> master) Author: ps <694835275@qq.com> Date: Sun May 12 10:13:39 2019 +0800 修改了hello內容 commit d3e411ba30e27624eb60a72eb0e256651cce0094 Author: ps <694835275@qq.com> Date: Sun May 12 09:31:24 2019 +0800 第一次提交
git log命令顯示從最近到最遠的提交日誌,每條日誌信息佔了五行記錄,若是日誌比較多的狀況下。咱們能夠在命令後添加 ==–pretty=oneline==單行來顯示日誌信息
$ git log --pretty=oneline c0dfa343063650dfc07ed264345ee342a64a4fd7 (HEAD -> master) 修改了hello內容 746eedfaa33033add248c2ec01a2d5da25a53816 第二次提交文件 d3e411ba30e27624eb60a72eb0e256651cce0094 第一次提交
==提示==‘d3e411ba…’這一長串的信息既是==版本號==
回退到上一個版本
git reset --hard HEAD^
回到指定版本
git reset --hard a1d1909f5
a1d1909f5版本號 首先咱們發現信息被咱們找回來了,其次‘a1d1909f5’是最新版本的版本號,雖然不全,可是前幾位要正確,git會自動匹配 Git的版本回退速度很是快,由於Git在內部有個指向當前版本的HEAD指針,當你回退版本的時候,Git僅僅是把HEAD從指向first update file 回退後 版本回退其實就是指針的改變。有時候咱們想要回退到之前的最新版本,這時候log命令查看不到對應的版本號,在次場景下咱們能夠經過git reflog來查看
$ git reflog c0dfa34 (HEAD -> master) HEAD@{0}: commit: 修改了hello內容 746eedf HEAD@{1}: commit: 第二次提交文件 d3e411b HEAD@{2}: commit (initial): 第一次提交
HEAD指向的版本就是當前版本,所以,Git容許咱們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。 切換前,用git log能夠查看提交歷史,以便肯定要回退到哪一個版本。 要切換將來,用git reflog查看命令歷史,以便肯定要回到將來的哪一個版本