git 的簡單了解與使用

一、簡介

Git是什么:Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。
什么是版本控制系統(tǒng):版本控制是一種記錄一個或若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)

二、安裝

如果是linux系統(tǒng),可以通過配好yum源倉庫,直接yum安裝;也可以通過git官網(wǎng)下載源碼,依次執(zhí)行./config;make; make install 完成編譯安裝

三、創(chuàng)建版本庫

版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

1、創(chuàng)建一個版本庫


注:目錄中最好不要帶中文

2、通過 git init 命令把這個目錄變成Git可以管理的倉庫:


這樣一個倉庫就建好了,而且告訴你是一個空的倉庫(empty Git repository),而且當(dāng)前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。
如果你沒有看到.git目錄,那是因?yàn)檫@個目錄默認(rèn)是隱藏的,用ls -ah命令就可以看見。

把文件添加到版本庫

所有的版本控制系統(tǒng),其實(shí)只能跟蹤文本文件的改動,比如TXT文件,網(wǎng)頁,所有的程序代碼等等。版本控制系統(tǒng)可以告訴你每次的改動,而圖片、視頻這些二進(jìn)制文件,雖然也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化,只能把二進(jìn)制文件每次改動串起來,也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統(tǒng)不知道,也沒法知道。

不幸的是,Microsoft的Word格式是二進(jìn)制格式,因此,版本控制系統(tǒng)是沒法跟蹤Word文件的改動的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫文件

因?yàn)槲谋臼怯芯幋a的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強(qiáng)烈建議使用標(biāo)準(zhǔn)的UTF-8編碼,所有語言使用同一種編碼,既沒有沖突,又被所有平臺所支持。注意:不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發(fā)記事本的團(tuán)隊(duì)使用了一個非常弱智的行為來保存UTF-8編碼的文件,他們自作聰明地在每個文件開頭添加了0xefbbbf(十六進(jìn)制)的字符,你會遇到很多不可思議的問題,比如,網(wǎng)頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報(bào)語法錯誤,等等,都是由記事本的弱智行為帶來的。建議你下載Notepad++代替記事本,不但功能強(qiáng)大,而且免費(fèi)!記得把Notepad++的默認(rèn)編碼設(shè)置為UTF-8 即可

Demo

1、 編寫一個readme.txt文件
2、 用命令git add告訴Git,把文件添加到倉庫:git add readme.txt
3、 用命令git commit告訴Git,把文件提交到倉庫:


注意:-m后面輸入的是本次提交的說明。commit可以一次提交多次文

小結(jié)

初始化一個Git倉庫,使用git init命令。
添加文件到Git倉庫,分兩步:
第一步,使用命令git add <file>,注意,可反復(fù)多次使用,添加多個文件;
第二步,使用命令git commit,完成。

四、版本庫操作

  • 要隨時掌握工作區(qū)的狀態(tài),使用git status命令。
  • 如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容。

版本回退

  • git log:查看版本庫狀態(tài)(版本提交日志)
  • git log --pretty=oneline:簡化顯示提交日志

前面那一串字符是commit id(版本號),和SVN不一樣,Git的commit id不是1,2,3……遞增的數(shù)字,而是一個SHA1計(jì)算出來的一個非常大的數(shù)字,用十六進(jìn)制表示。防止沖突。

  • git reset:回退到上一個版本
    HEAD表示當(dāng)前版本,上一個版本是HEAD,上上個版本是HEAD^,網(wǎng)上100個版本是HEAD~100。
    回退后查看readme.txt的內(nèi)容是不是已經(jīng)回退:cat readme.txt
    回退之后想要再恢復(fù):git reflog用來記錄你的每一次命令,執(zhí)行后找到回退前的那個版本的commit id(或者在命令行里找到),就可以制定恢復(fù)到回退前的版本(id的前幾位就行):

Git的版本回退速度非???,因?yàn)镚it在內(nèi)部有個指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時候,Git僅僅是把HEAD從指向那一版本。然后順便把工作區(qū)的文件更新了。所以你讓HEAD指向哪個版本號,你就把當(dāng)前版本定位在哪。

總結(jié)

  • HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
  • 穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。
  • 要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容