Git使用心得(一)

本文旨在記錄自己學習Git的一些操作體驗街望,同時也分享給大家,使用的為Windows系統(tǒng):


Windows下安裝Git

請同學們自行去Git官網(wǎng)下載安裝弟跑,安裝成功后在CMD命令窗口
輸入git --version回車后會看到對應的版本信息灾前,
如下:
git安裝后版本信息查看
接下來,我們在開始菜單中找到“Git”->“Git Bash”孟辑,打開后跳出類似命令窗口的東西哎甲,
后續(xù)我們命令執(zhí)行工具都在此東東下面完成
Git命令運行工具

安裝完成后還需要最后一步設置蔫敲,在命令行輸入如下命令:

$ git config --global user.name "Your Name"*
$ git config --global user.email "email@example.com"*

因為Git是分布式版本控制系統(tǒng),所以每個機器都必須自報家門:你的名字和Email地址
注意git config命令的--global參數(shù)炭玫,這個參數(shù)是全局的意思表示你這臺機器上的所有Git倉庫都會使用這個配置奈嘿,當然也可
以對某個倉庫指定不同的用戶名和Email地址

到這里Git的安裝就講完了,接下來我們來使用Git來做文件版本控制


Git版本庫

版本庫又名版本倉庫吞加,英文名Repository裙犹,和SVN等其他版本控制工具一樣,就是一個目錄衔憨,這個目錄里面的所有文件
都可以被Git管理起來叶圃,每個文件的修改刪除Git都可以跟蹤,以便在將來還原

創(chuàng)建一個版本庫非常簡單践图,簡歷一個空文件目錄掺冠,然后在該目錄下使用git init命令初始化將該目錄變成Git可識別的倉庫即可

thinkpad@thinkpad-PC MINGW64 ~
$ mkdir learngit

thinkpad@thinkpad-PC MINGW64 ~
$ cd learngit/

thinkpad@thinkpad-PC MINGW64 ~/learngit
$ pwd
/c/Users/thinkpad/learngit

thinkpad@thinkpad-PC MINGW64 ~/learngit
$ git init
Initialized empty Git repository in C:/Users/thinkpad/learngit/.git/

現(xiàn)在Git倉庫已經(jīng)建好了,我們會發(fā)現(xiàn)在我們建立的文件夾下面出現(xiàn)了一個隱藏的.git的文件夾码党,沒錯這就是倉庫初始化后出現(xiàn)的Git配置信息德崭,沒事可不要亂動喲。

若你沒有看到.git的文件夾也沒事闽瓢,因為該文件夾是隱藏的接癌,使用ls -ah命令即可看見

thinkpad@thinkpad-PC MINGW64 ~/learngit (master)
$ ls -ah
./  ../  .git/

所有的版本控制系統(tǒng)都只能跟蹤文本文件的改動心赶,二進制文件無法跟蹤其內(nèi)容的變化扣讼,另外Microsoft的Word格式為二進制,故版本控制系統(tǒng)無法進行跟蹤其改動缨叫。

另使用Microsoft記事本同學的一定要注意:千萬不要使用Windows自帶的記事本編輯任何文件椭符,原因是Microsoft記
事本團隊在每個記事本內(nèi)容的最前面加入了0xefbbbf(十六進制)的字符,所以你會遇到一些不可思議的問題耻姥,比如網(wǎng)頁前面多了個?等

Git文件操作-1

下面我們在已經(jīng)初始化好的learngit倉庫下創(chuàng)建a.txt文件销钝,內(nèi)容如下

Git is a version control system.
Git is free software.
  • 使用git add命令將文件添加到倉庫
thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git add a.txt
warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.

注:出現(xiàn)如上警告原因為windows下的換行符為CRLF,而linux下的換行符為LF琐簇,在windows下使用git bash提交將會出現(xiàn)如下情況蒸健,后續(xù)如經(jīng)常出現(xiàn)不用刻意去管

  • 使用git commit命令將文件提交到倉庫
thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git commit -m "第一次使用提交命令備注"
[master (root-commit) 4f03f9e] 第一次使用提交命令備注
warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.
 1 file changed, 2 insertions(+)
 create mode 100644 testFiles/a.txt

注:git commit -m "本次提交備注",-m 所帶參數(shù)為提交說明

現(xiàn)在我們運行g(shù)it status命令來查看下當前版本庫的狀態(tài)

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git status
On branch master
nothing to commit, working tree clean

注:該提示告訴我們沒有需要提交的修改婉商,而且工作目錄是干凈的

git add可以多次添加文件似忧,而git commit一次可以提交很多文件,所以可以多次add不同的文件

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "commit 3 files."

小結(jié)

初始化一個Git倉庫丈秩,使用git init命令盯捌。
添加文件至Git倉庫,分兩步:

  • 1蘑秽、使用git add <file>添加文件饺著,可反復使用
  • 2箫攀、使用git commit 提交,完成

Git文件操作-2

我們已經(jīng)成功地添加了一個a.txt文件至倉庫了幼衰,現(xiàn)在我們繼續(xù)工作靴跛,修改a.txt內(nèi)容成如下:
Git is a distributed version control system.
Git is free software

現(xiàn)在運行g(shù)it status命令繼續(xù)查看結(jié)果

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ 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:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")

注:上面的命令告訴我們.文件已經(jīng)被修改過了,但還沒有準備提交的修改渡嚣。

我們有些時候想查看修改了那些內(nèi)容汤求,那么就可以執(zhí)行g(shù)it diff命令,如下:

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git diff
diff --git a/testFiles/a.txt b/testFiles/a.txt
index 46d49bf..9247db6 100644
--- a/testFiles/a.txt
+++ b/testFiles/a.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.
warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.

注:上述代碼-號部分為老的內(nèi)容严拒,+號部分為新的內(nèi)容扬绪,沒有符號為老的內(nèi)容

知道了修改的具體內(nèi)容后我們就可以安心的提交代碼了,那么提交修改和提交新增文件同樣的是兩步裤唠,第一步是git add挤牛,第二步為git commit ,下面我們看下執(zhí)行第一步后使用git status命令查看版本庫狀態(tài)

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git status
warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   a.txt

注:上述說明將要被提交的修改包括a.txt文件种蘸,下一步就可以放心的執(zhí)行第二步進行提交了

下面執(zhí)行第二步提交操作

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git commit -m "修改a文件內(nèi)容后再次commit提交"
[master warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.
88093bf] 修改a文件內(nèi)容后再次commit提交
warning: LF will be replaced by CRLF in testFiles/a.txt.
The file will have its original line endings in your working directory.
 1 file changed, 1 insertion(+), 1 deletion(-)

注:以上命令就是提交后的輸出信息

我們再次執(zhí)行g(shù)it status命令來查看當前版本庫的狀態(tài)

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git status
On branch master
nothing to commit, working tree clean

注:以上輸出指當前工版本庫沒有需要提交的文件墓赴,工作目錄是干凈的

在開發(fā)中我們經(jīng)常提交修改文件,某一天你忘了你上次提交的內(nèi)容是什么航瞭,那么日志查看命令就顯得尤為重要了诫硕,命令及輸出如下:

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git log
commit 92ba36d082e2623e748b6c5f88c15681e4c5710b
Author: renjj <renjj@zcxny.cn>
Date:   Wed Feb 1 14:47:00 2017 +0800

    第三次修改提交備注

commit 88093bf8dbddc28ccd045f0c32cdf37ac238d819
Author: renjj <renjj@zcxny.cn>
Date:   Wed Feb 1 14:40:16 2017 +0800

    修改a文件內(nèi)容后再次commit提交

commit 4f03f9ee4018a309d9b3196a1780f6a950098f6f
Author: renjj <renjj@zcxny.cn>
Date:   Tue Jan 31 19:50:56 2017 +0800

    第一次使用提交命令備注

注:如果覺得輸出太多眼花繚亂,可以加上 --pretty=oneline參數(shù)刊侯,其輸出如下:

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git log --pretty=oneline
92ba36d082e2623e748b6c5f88c15681e4c5710b 第三次修改提交備注
88093bf8dbddc28ccd045f0c32cdf37ac238d819 修改a文件內(nèi)容后再次commit提交
4f03f9ee4018a309d9b3196a1780f6a950098f6f 第一次使用提交命令備注

注:一大串字符是指commitid章办,因Git為分布式版本控制原因故不能使用SVN中的1,2,3之類的數(shù)字,而是以SHA1算法算出的數(shù)字
以16進制表示滨彻,每提交一個版本藕届,Git則會講它們自動串成一條線

小結(jié)

  • 1、要隨時掌握工作區(qū)的狀態(tài)亭饵,使用git status命令
  • 2休偶、如果git status告訴你有文件修改過,可以使用git diff查看修改內(nèi)容
  • 3辜羊、若想查看提交過的記錄則可以使用git log查看日志記錄

現(xiàn)在你已經(jīng)學會了提交修改到版本庫踏兜,現(xiàn)在再練習一次,修改a.txt內(nèi)容如下八秃,然后嘗試提交:
Git is a distributed version control system.
Git is free software distributed under teh GPL.

Git文件操作-3

下面我們回退到上一個版本碱妆,使用git reset命令,上一個版本是HEAD喜德,上上個版本為HEAD^山橄,上100個版本為HEAD~100

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git reset --hard HEAD^
HEAD is now at 88093bf 修改a文件內(nèi)容后再次commit提交
注:--hard有何作用暫時不做說明,先加上,后面再講解航棱,現(xiàn)在查看內(nèi)容睡雇,你會發(fā)現(xiàn)果然回退到上一個版本了
thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ cat a.txt
Git is a distributed version control system.
Git is free software.

接下來我們繼續(xù)使用git log信息查看版本庫提交日志

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git log
commit 88093bf8dbddc28ccd045f0c32cdf37ac238d819
Author: renjj <renjj@zcxny.cn>
Date:   Wed Feb 1 14:40:16 2017 +0800

    修改a文件內(nèi)容后再次commit提交

commit 4f03f9ee4018a309d9b3196a1780f6a950098f6f
Author: renjj <renjj@zcxny.cn>
Date:   Tue Jan 31 19:50:56 2017 +0800

    第一次使用提交命令備注

果然,已經(jīng)找不到最新的那個版本日志信息了饮醇,但這時候你又想再回到最新的版本它抱,怎么辦?辦法還是有的,只要上個命令行窗口還沒有被關掉朴艰,你就可以順著往上找到那個最新的commit id观蓄,于是就可以指定回退到未來的某個版本。

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git reset --hard 92ba36d082e(此處只寫一部分即可,Git會自動去匹配)
HEAD is now at 92ba36d 第三次修改提交備注
然后查看內(nèi)容和日志發(fā)現(xiàn)又回來了祠墅,是不是很神奇呢?

現(xiàn)在你關掉電腦休息了會侮穿,發(fā)現(xiàn)我又想回到另外一個版本,這時候找不到commit id該怎么弄呢?Git提供了一個命令git reflog用來記錄你每一次命令:

thinkpad@thinkpad-PC MINGW64 ~/learngit/testFiles (master)
$ git reflog
92ba36d HEAD@{0}: reset: moving to 92ba36d082e
88093bf HEAD@{1}: reset: moving to HEAD^
92ba36d HEAD@{2}: commit: 第三次修改提交備注
88093bf HEAD@{3}: commit: 修改a文件內(nèi)容后再次commit提交
4f03f9e HEAD@{4}: commit (initial): 第一次使用提交命令備注
注:最前面則是commit id毁嗦,拿到commit id我們就能夠隨意回退到指定版本了

小結(jié)

  • 1亲茅、HEAD指向的版本就是當前版本,因此狗准,Git可以讓我們?nèi)我馔诉M克锣,使用命令git reset --hard commit_id 即可
  • 2、回退前使用git log可以查看歷史腔长,以便確認要回退哪個版本
  • 3袭祟、要返回到未來可以使用git reflog查看命令歷史,以便確定要回退的的版本

本人也在學習摸索階段捞附,如寫得有誤的地方巾乳,請朋友們指出及時改正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市故俐,隨后出現(xiàn)的幾起案子想鹰,更是在濱河造成了極大的恐慌紊婉,老刑警劉巖药版,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異喻犁,居然都是意外死亡槽片,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門肢础,熙熙樓的掌柜王于貴愁眉苦臉地迎上來还栓,“玉大人,你說我怎么就攤上這事传轰∈:校” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵慨蛙,是天一觀的道長辽聊。 經(jīng)常有香客問我纪挎,道長,這世上最難降的妖魔是什么跟匆? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任异袄,我火速辦了婚禮,結(jié)果婚禮上玛臂,老公的妹妹穿的比我還像新娘烤蜕。我一直安慰自己,他們只是感情好迹冤,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布讽营。 她就那樣靜靜地躺著,像睡著了一般泡徙。 火紅的嫁衣襯著肌膚如雪斑匪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天锋勺,我揣著相機與錄音蚀瘸,去河邊找鬼。 笑死庶橱,一個胖子當著我的面吹牛贮勃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苏章,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼寂嘉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了枫绅?” 一聲冷哼從身側(cè)響起泉孩,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎并淋,沒想到半個月后寓搬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡县耽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年句喷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兔毙。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡唾琼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出澎剥,到底是詐尸還是另有隱情锡溯,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站祭饭,受9級特大地震影響涌乳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甜癞,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一夕晓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悠咱,春花似錦蒸辆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眼坏,卻和暖如春拂玻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宰译。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工檐蚜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沿侈。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓闯第,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缀拭。 傳聞我的和親對象是個殘疾皇子咳短,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345