Git学习笔记2
本文內(nèi)容節(jié)選自廖雪峰的git教程,他講的已經(jīng)很詳細了,我只是摘抄做一部分筆記,方便自己的理解。你們看不懂也是正常的.............
常用的命令,以及含義:
查看提交日記 git log
命令顯示從最近到最遠的提交日志,?如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù):git log --pretty=oneline
需要友情提示的是,你看到的一大串類似3628164...882e1e0的是commit id(版本號),和SVN不一樣,Git的commit id不是1,2,3……遞增的數(shù)字,而是一個SHA1計算出來的一個非常大的數(shù)字,用十六進制表示,而且你看到的commit id和我的肯定不一樣,以你自己的為準。為什么commit id需要用這么一大串數(shù)字表示呢?因為Git是分布式的版本控制系統(tǒng),后面我們還要研究多人在同一個版本庫里工作,如果大家都用1,2,3……作為版本號,那肯定就沖突了。
?
版本回退?git reset
首先,Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100。
使用git reset命令:$ git reset --hard HEAD^ ?
?
然后我們用git log再看看現(xiàn)在版本庫的狀態(tài),會發(fā)現(xiàn)最新的一般沒有了,這時候,你想回退到最新一版本,可以這樣操作,前提是你沒有關(guān)閉。找到那你需要文件的commit id是3628164...,于是就可以指定回到未來的某個版本:?git reset --hard 3628164 ?版本號沒必要寫全,前幾位就可以了,Git會自動去找。當然也不能只寫前一兩位,因為Git可能會找到多個版本號,就無法確定是哪一個了。
?
現(xiàn)在,你回退到了某個版本,關(guān)掉了電腦,第二天早上就后悔了,想恢復到新版本怎么辦?找不到新版本的commit id怎么辦?
在Git中,總是有后悔藥可以吃的。當你用$ git reset --hard HEAD^回退到add distributed版本時,再想恢復到append GPL,就必須找到append GPL的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令:
git reflog
小結(jié):
-
HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
-
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。
-
要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。
工作區(qū)(Working Directory)
就是你在電腦里能看到的目錄,比如我的learngit文件夾就是一個工作區(qū):
版本庫(Repository)
工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動創(chuàng)建的第一個分支master,以及指向master的一個指針叫HEAD。
前面講了我們把文件往Git版本庫里添加的時候,是分兩步執(zhí)行的:
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實際上就是把暫存區(qū)的所有內(nèi)容提交到當前分支。
因為我們創(chuàng)建Git版本庫時,Git自動為我們創(chuàng)建了唯一一個master分支,所以,現(xiàn)在,git commit就是往master分支上提交更改。
你可以簡單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。
?
前面講了我們把文件往Git版本庫里添加的時候,是分兩步執(zhí)行的:
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實際上就是把暫存區(qū)的所有內(nèi)容提交到當前分支。
因為我們創(chuàng)建Git版本庫時,Git自動為我們創(chuàng)建了唯一一個master分支,所以,現(xiàn)在,git commit就是往master分支上提交更改。
你可以簡單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。
一旦提交后,如果你又沒有對工作區(qū)做任何修改,那么工作區(qū)就是“干凈”的:
$ git status # On branch master nothing to commit (working directory clean)現(xiàn)在版本庫變成了這樣,暫存區(qū)就沒有任何內(nèi)容了:
所以,git add命令實際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后,執(zhí)行g(shù)it commit就可以一次性把暫存區(qū)的所有修改提交到分支。
?
cat 文件名 可以用來查看文件的內(nèi)容
?
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
好,現(xiàn)在,把第二次修改提交了,然后開始小結(jié)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/huansky/p/5512470.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 文件字符流 编码判断
- 下一篇: LSQL Developer连接Orac