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地址。命令行
mkdir learngit
cd learngit
pwd
/users/michael/learngit
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 add readme.txt
執行上面的命令,沒有任何顯示,就就是ok了。由於Unix十分哲學(大佬原話哈哈哈),沒有消息就是最好的消息。
$ 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 add file1.txt git add file2.txt file3.txt git commit -m "add 3 files"
如今你已經學會了修改文件,而後修改以前的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的commit id是1094adb.....
$ git reset --hard 1094a >>HEAD is now at 83b0afe append GPL
版本號不須要寫全,前幾位就能夠,git會本身去找。
Git的版本回退速度進行的很是快,由於Git內部有個指向當前版本的HEAD指針,當你回退版本的時候,
Git僅僅是把HEAD指針從指向append GPL改成指向add distributed,而後順便把工做區改了。
在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查看歷史命令,以便要肯定要回到將來那個版本
對你有幫助就支付寶請我喝可樂叭~~~