柚子快報激活碼778899分享:Git的一些基本操作
初始git
我們給出下面的一個場景,在大學(xué)里,一些老師在我們做完實驗之后喜歡讓我們交實驗報告,假設(shè)我們有一個比較追求完美的老師和一個勤奮的學(xué)生,這個學(xué)生叫做小帥,那天小帥桑勤奮的完成實驗報告,在第二天的時候就去老師辦公室教實驗報告,但是這個老師一看小帥的實驗報告,馬上說這個實驗報告不行,讓你區(qū)改一下,這個時候就有我們第一版本的實驗報告,然后你去改了好幾次,也有好多版本的時候,假設(shè)小帥已經(jīng)寫了五個版本的時候,老師說”小帥啊,我看你是個勤奮的學(xué)生,是這樣的,我看你這個報告還是第二次的最好,你把你第二次改的實驗報告拿來就可以了”,因為小帥的實驗報告是在每次的基礎(chǔ)上改的,所以沒有保留之前的版本,這個小帥的心中有一萬頭草泥馬在奔跑,就這樣勤奮的小帥被刁鉆的老師打敗了,這個時候git的作用就可以體現(xiàn)出來了,他就是一個版本控制器,我們可以理解有了它,小帥就能輕松的找出第二個版本的實驗報告,因為每一次的實驗報告git都會記錄下來,但是git可不是僅僅記錄實驗報告用著,對程序員來說,就是一個可以管理我們源代碼的一個重要工具。
為了能夠更?便我們管理這些不同版本的?件,便有了版本控制器。所謂的版本控制器,就是能讓你 了解到?個?件的歷史,以及它的發(fā)展過程的系統(tǒng)。通俗的講就是?個可以記錄?程的每?次改動和 版本迭代的?個管理系統(tǒng),同時也?便多?協(xié)同作業(yè)。
?前最主流的版本控制器就是 Git 。Git 可以控制電腦上所有格式的?件,例如 doc、excel、dwg、 dgn、rvt等等。對于我們開發(fā)?員來說,Git 最重要的就是可以幫助我們管理軟件開發(fā)項?中的源代碼 ?件!
?注意事項
還需要再明確?點,所有的版本控制系統(tǒng),Git 也不例外,其實只能跟蹤?本?件的改動,?如 TXT ? 件,??,所有的程序代碼等等。版本控制系統(tǒng)可以告訴你每次的改動,?如在第5?加了?個單詞 “Linux”,在第8?刪了?個單詞 “Windows”。 ?圖?、視頻這些?進(jìn)制?件,雖然也能由版本控制系統(tǒng)管理,但沒法跟蹤?件的變化,只能把?進(jìn) 制?件每次改動串起來,也就是只知道圖?從100KB改成了120KB,但到底改了啥,版本控制系統(tǒng)不 知道,也沒法知道
git的本質(zhì)就是一個版本控制器?
git的安裝
我們可以先來查詢一下我們的云服務(wù)器上是否存在git,輸入指令
sudo yum -y install git
我們也可以在我們后面輸入指令
git --version
來查看我們的版本(后面我演示都是在我自己的本地云服務(wù)器上)
[tjl@hecs-67680 ~]$ git --version
git version 1.8.3.1
[tjl@hecs-67680 ~]$
這樣我們就可以查詢我們的版本了。
Linux-ubuntu
如果你的平臺是ubuntu我們可以執(zhí)行下面的指令來安裝git
sudo apt-get install git -y
?查詢git的版本還是下面的這個條指令
git --version
這樣我們的第一步完成了。
創(chuàng)建本地倉庫
首先我們需要在本地創(chuàng)建一個目錄,因為我們現(xiàn)在知道git是一個版本控制器,所以就應(yīng)該在一個目錄下進(jìn)行對我們文件進(jìn)行管理。
創(chuàng)建出目錄指令
mkdir gitcode
然后我們進(jìn)入目錄,別忘記進(jìn)入目錄是cd指令
cd gitcode
然后我們在當(dāng)前目錄下輸入指令
git init
就可以對我們的倉庫進(jìn)行初始化了。
我們執(zhí)行指令就可以看到我們下面的結(jié)果
[tjl@hecs-67680 gitcode]$ ll -a
total 12
drwxrwxr-x 3 tjl tjl 4096 Feb 5 11:46 .
drwx------ 20 tjl tjl 4096 Feb 4 21:17 ..
drwxrwxr-x 8 tjl tjl 4096 Feb 4 22:34 .git
因為我這里直接創(chuàng)建過東西,所以有一些東西不一樣,我把它刪了,看到的就是這個東西
先來了解這里.git是一個什么東西,它就是版本庫,我們來看看下面的這個圖
執(zhí)行指令tree .git
可以看到這個就是.git版本庫里面的東西,我們后面會一個一個講解,比如這里的Head指針
對象庫(objects)還有暫存區(qū)(index)這些,現(xiàn)在我們需要做的就是完成一些配置
我們直接執(zhí)行下面的指令進(jìn)行配置
git config --global user.name "內(nèi)容(比如我寫的就是姓名縮寫)"
gti config --global user.email "最好輸入就是你的郵箱,便于管理"
?我們這里如果沒有加上--global就不是全局的,最好寫成就是加上的,這樣所有的地方都有你的記錄,在企業(yè)中我們的姓名和郵箱這個是很重要的,因為這樣就可以看到每次提交人的信息,以便有問題的時候可以找到你。
當(dāng)然如果我們一開始設(shè)置錯誤的時候,我們也可以進(jìn)行重置,指令就是
git config --unset user.name
git config --unset user.email
注意:我們的指令進(jìn)行的時候可一定要在我們的倉庫下執(zhí)行,否則沒有我用
認(rèn)識?作區(qū)、暫存區(qū)、版本庫
圖來
啥是我們的工作區(qū),啥是我們的版本庫呢???
首先在我們的倉庫下,也就是我們的目錄下,除了.git的區(qū)域就是我們的工作區(qū),而我們的.git就是版本庫了,那他們有是聯(lián)系嗎。
首先就是我們這里就需要來了解一下兩條指令
git add [文件名]//將我們工作區(qū)的內(nèi)容提交到暫存區(qū)
git commit -m "標(biāo)簽"http://將我們的內(nèi)容提交到版本庫中,會有一個HEAD的指針來進(jìn)行指示
只有在commit之后我們的內(nèi)容才會真正的進(jìn)入版本庫中了
?
這里需要擴(kuò)展的一點因為我們的 暫存區(qū)其實是一個輕量級的庫,所以其實我們一些修改的內(nèi)容在add的時候是放在對象庫中,這里修改的內(nèi)容是指哪些呢,首先就是新增文件,在文件里添加內(nèi)容,刪除文件,這些操作都會存在對象庫中。然后我們的暫存區(qū)就會從里面拿出內(nèi)容add進(jìn)去。
我們現(xiàn)在我們目錄下,也就是工作區(qū)創(chuàng)建出一個文件叫做ReadMe,并用vim在里面添加一些文本內(nèi)容。
[tjl@hecs-67680 gitcode]$ vim ReadMe
[tjl@hecs-67680 gitcode]$ ll
total 4
-rw-rw-r-- 1 tjl tjl 10 Feb 5 12:12 ReadMe
[tjl@hecs-67680 gitcode]$ cat ReadMe
Hello Git
然后進(jìn)行g(shù)it add進(jìn)行添加到我們的暫存區(qū)當(dāng)中。
git add ReadMe
那要徹底的放到我們的版本庫中的話需要執(zhí)行的指令就是git commit -m "first add"
執(zhí)行指令可以看到以下的場景。
[tjl@hecs-67680 gitcode]$ git commit -m "the first add"
[master a6900ba] the first add
1 file changed, 1 insertion(+), 2 deletions(-)
我們也可以繼續(xù)用git log來查詢我們的提交記錄
因為之前提交過內(nèi)容,所以大家看的這里比較多,但是其實如果大家一開始什么都沒提交的話,請情況只有這里的第一條內(nèi)容,我們這里可以看到每次提交的時間,還有姓名和郵箱,這樣就話在企業(yè)里也可以對你進(jìn)行很好的管理。
我們也可以只打印這里的commit ID
[tjl@hecs-67680 gitcode]$ git log --pretty=oneline
a6900ba4258d83df1a8e67c1f4f2ffed32946633 the first add
3e54e85c13b3492b5a27fed80d8e3baa19c247ec the second commit
f9cca32c3296b756ff8fe68371280e1f2bab5828 the first commit
?
需要說明的是,我們看到的??串類似
23807c5...56eed6
的是每次提交的
commit id
(版本
號),Git 的
commit id
不是1,2,3……遞增的數(shù)字,?是?個 SHA1 計算出來的?個?常?的數(shù) 字,??六進(jìn)制表?(你看到的 commit id
和我的肯定不?樣,以你??的為準(zhǔn))
?因為為了更好的演示后面的一些操作我們這里還需要添加一些文件,大家可以看看我下面的操作,就不講解沒一個操作是怎樣的,因為很簡單。
[tjl@hecs-67680 gitcode]$ touch test1 test2
[tjl@hecs-67680 gitcode]$ git add test1 test2
[tjl@hecs-67680 gitcode]$ touch test3
[tjl@hecs-67680 gitcode]$ git add test3
[tjl@hecs-67680 gitcode]$ git commit -m "commit test"
[master a9ff80a] commit test
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test1
create mode 100644 test2
create mode 100644 test3
[tjl@hecs-67680 gitcode]$
再來打開我們.git
現(xiàn)在我們就可以清楚的看到一些變化,首先就是我們的暫存區(qū)(index)
1 index
就是我們的暫存區(qū),add 后的內(nèi)容都是添加到這?的。
2.
HEAD
就是我們的默認(rèn)指向 master 分?的指針
?我們也可以來看看HEAD下的東西
[tjl@hecs-67680 gitcode]$ cat .git/HEAD
ref: refs/heads/master
[tjl@hecs-67680 gitcode]$
然后我們再來進(jìn)入一個目錄
[tjl@hecs-67680 gitcode]$ cat .git/refs/heads/master
a9ff80ab653911ff6127ef4450b04accf52eca4b
下面的這個ID其實就是我們最近一次commit的ID,這個ID就可以來來查看對象中的內(nèi)容
[tjl@hecs-67680 gitcode]$ git cat-file -p a9ff80ab653911ff6127ef4450b04accf52eca4b
tree d2c1bc8d75fc468be739934ae0d1217eec64ce3b
parent a6900ba4258d83df1a8e67c1f4f2ffed32946633
author tjl <2357850265@qq.com> 1707107089 +0800
committer tjl <2357850265@qq.com> 1707107089 +0800
commit test
這個就是我們的最近一次對這些文件的修改都被記錄下來了
總結(jié)?下,在本地的 git 倉庫中,有?個?件或者?錄很特殊 ?
?
?
index: 暫存區(qū),
git add
后會更新該內(nèi)容。
?
HEAD: 默認(rèn)指向 master 分?的?個指針。
?
refs/heads/master: ?件?保存當(dāng)前
master
分?的最新
commit id
。
?
objects: 包含了創(chuàng)建的各種版本庫對象及內(nèi)容,可以簡單理解為放了 git 維護(hù)的所有修改。
?這里繼續(xù)添加兩個指令
git status //來查看上次提交之后在工作區(qū)中的內(nèi)容是否被修改
git diff [文件] //來顯示工作區(qū)和暫存區(qū)的不同
啥意思呢???
就是我們在工作區(qū)是可以繼續(xù)一些操作,比如我們是不是可以創(chuàng)建出文件,也可以在文件中新增內(nèi)容,但是我們沒有進(jìn)行add操作,這些內(nèi)容就還是在工作區(qū),我們并沒有將修改的對象加載到暫存區(qū),所以就可以用git status 來查看,然后git diff可以更清楚的對比我們到底哪里進(jìn)行修改,有人就會問,我剛修改的對象我怎么可能忘記呢!假如場景是下面的這個,有一天你寫了代碼提交了,然后你又改了,改好之后你媽叫你去吃飯了,然后你忘記提交了,三天之后你還記得你改在哪里了嗎,所以git diff就可以來幫助我們解決這個問題
版本回退
之前我們也提到過,Git 能夠管理?件的歷史版本,這也是版本控制器重要的能?。如果有?天你發(fā)現(xiàn) 之前前的?作做的出現(xiàn)了很?的問題,需要在某個特定的歷史版本重新開始,這個時候,就需要版本 回退的功能了。
有時候我們可能想找到上一版本的時候我們也可以通過版本回退的操作進(jìn)行查找,指令就是以下的內(nèi)容
git reset [--soft | --mixed | --hard] commitID
?
看這個圖就可以來理解我們使用不同指令進(jìn)行回退的時候應(yīng)該加上那個指令
一般不建議加上 --haed,因為這個是把工作區(qū),暫存區(qū),版本庫的內(nèi)容都回退,雖然可以用指令查詢到,但是如果commit ID變了的話就不能查詢到了,反正建議就是最好不要用,。
?查詢以往commitID可以用的指令
git reflog
今天的內(nèi)容就到這里,后面會繼續(xù)更新git的內(nèi)容!
?
柚子快報激活碼778899分享:Git的一些基本操作
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。