b2b b2c 網(wǎng)站建設(shè)seo網(wǎng)站關(guān)鍵詞優(yōu)化多少錢
文章目錄
- 一、前言
- 二、有關(guān)git的相關(guān)歷史介紹
- 三、Git版本管理
- 1、感性理解 —— 大學(xué)生實驗報告
- 2、程序員與產(chǎn)品經(jīng)理
- 3、張三的CEO之路 —— 版本管理工具的誕生
- 四、如何在Linux上使用Git
- 1、創(chuàng)建倉庫
- 2、將倉庫克隆到本地
- 3、git三板斧
- ① git add
- ② git commit
- ③ git push
- 4、有關(guān)git的其他指令
- 五、總結(jié)與提煉
一、前言
本文來為讀者介紹一下分布式版本控制工具Git,可能你聽說過Gitee/GitHub,里面都帶有g(shù)it的字樣,那它們和Git之間有什么關(guān)聯(lián)呢? Git又是何物,讓我們一起走進(jìn)本文的學(xué)習(xí)📖
Git(讀音為/g?t/)是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。 [1] 也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件 —— 來自百度百科
上面說到了對于git來說支持分布式管理,簡單來說就是【多分支】,所以它在團(tuán)隊協(xié)作中也是起到尤為重要的作用,大家可以將自己的代碼上傳到同一個倉庫中進(jìn)行管理,方便了項目開發(fā)時的多人協(xié)作。因此git其實對于我們在項目開發(fā)過程中也是重要的一個工具🔧
不過本文不會涉及到分布式,因為博主還沒有學(xué)習(xí)得那么深入,只是了解了一下。不過會帶大家了解git 的歷史背景,知道它的由來。并且做到能在 LInux 上使用 git ,完成代碼的提交等基本操作👈
二、有關(guān)git的相關(guān)歷史介紹
首先我們要說說Git這個東西是怎么來的,是誰發(fā)明創(chuàng)造了它
- 對于Git的創(chuàng)建者,就是下面這個“小伙子”,它叫做【Linus Torvalds】,被稱做Linux之父、Linux內(nèi)核的發(fā)明人及該計劃的合作者
- 他在開創(chuàng)Linux系統(tǒng)的時候,開發(fā)了一段時間后便將他的代碼開源出來,使得全世界的頂級黑客、工程師可以一起參與到Linux的開發(fā)與制作中來,所以每天都會有很多人給他發(fā)代碼,那么他只能復(fù)制粘貼,這顯得很煩很累,于是他便想到有沒有這么一款版本控制和多人協(xié)作的軟件呢,這樣可以提高我們的開發(fā)效率?
- 于是他找到了這么一款軟件叫做【BitKeeper】,不過呢它是收費(fèi)的,就很難受。這件商業(yè)公司的老板就找到【Linus Torvalds】覺得很欣賞他,于是就免費(fèi)提供給他的社區(qū)使用,于是大家就使用它進(jìn)行了高效地開發(fā)
- 但是呢,那些世界級的頂級黑客、工程師充滿著好奇心,就想要去破解一下這塊軟件。于是有一天,一個小白工程師在完成了某項破解工作后將他的成果發(fā)布到社區(qū)中,就被這家公司的人看到了,于是老板很憤怒(我給你免費(fèi)使用,但你來搞我?),于是就不給他們免費(fèi)用了
- 那此時【Linus Torvalds】就又開始了他的Ctrl + c/v。。。直到有一天終于受不了了,便自己用了兩三周的時間開發(fā)出了一款版本控制和多人協(xié)作的軟件,它就是 —— git。直到現(xiàn)今的代碼托管平臺【Gitee】【GitHub】都是基于它實現(xiàn)的
而Git 也因為其精簡的設(shè)計、易于學(xué)習(xí)、占地面積小、性能快等一些系列優(yōu)點(diǎn)深受程序員喜愛
三、Git版本管理
接下去我們來聊聊有關(guān)Git的版本管理。其實對于Git還有很多其他的功能,像分支管理、版本管理、版本回退、項目發(fā)布等等,這些功能可以支撐我們進(jìn)行多人協(xié)作
1、感性理解 —— 大學(xué)生實驗報告
因為對于Git的版本管理這一塊挺難理解的,所以我會通過一個小案例來幫助大家理解,那就是我們大學(xué)生都要寫的一樣?xùn)|西 —— 實驗報告
對于實驗報告呢,相信大家都寫過,額。。。應(yīng)該說是都抄過。各種像大物實驗報告、英語翻譯實驗報告、網(wǎng)絡(luò)實驗報告、電路實驗報告等等,對于這個報告而言一般有一兩個人寫好了那基本大家也都可以寫好了,看上去也是差不多的樣子,因為總會有那么一兩個人會認(rèn)真地去寫實驗報告?
好,話不多說,我們繼續(xù)扯
- 你呢是一所普通高校的學(xué)生,叫做【張三】,你的室友叫做【小明】,今天是周一,明天就有大物實驗課,所以就要交實驗報告,不過你們是不同組的,所以你可以后天再交,到時候可以抄小明的。此時你的室友小明正在奮筆疾書地“寫”著它的實驗報告,爭取要做寫得最好的那一個,于是將它的報告改來改去,最后改的自己非常滿意之后才上床睡覺💤
- 到了第二天,小明開開心心地找到老師(^ _ ^),交上了他的實驗報告,不過到了下午老師就把小明叫到了辦公室,和它講了有關(guān)實驗報告的內(nèi)容,挑出了小明實驗報告中的很多問題,于是原本信心滿滿的小明在聽了老師這番說辭之后便很郁悶地回到了宿舍開始了它的 實驗報告修改之路。于是他將實驗報告該來改來改去,終于將老師和它講的這些修改好了,于是后一天來到物理老師的辦公室交上了他的那份實驗報告📰
- 這天當(dāng)老師收到小明修改后的【第二份】實驗報告后,看來看去又指出了他一些地方的問題,于是就再讓小明回去修改,那此時的小明沒辦法,只能按照老師的要求來,繼續(xù)回去修改自己的報告。有耐心的小明在又一次修改了自己的報告后找到老師,可老師還是說:“小明,你這報告怎么越改越差呀,還不如第二版來得好呢,我看你也別改了,就把第二份的實驗報告交上來,我看看給你些分?jǐn)?shù)”
- 聽了老師的這番說辭,小明心想,我每次都是在上一次的報告上直接做修改的呀,怎么還找得到第二版的實驗報告呢?那此時的小明就非常慌張,不知道該如何是好,只能回憶那個時候自己的報告是如何寫的,然后再慢慢地做修改
此時的你【張三】目睹了上面這一切過程,于是心中便多了一個心眼👀
- 在小明交完實驗報告的后一天,你也需要交實驗報告了。 當(dāng)報告交上去后,果然老師也把你叫過去然后讓你修改實驗報告里的很多內(nèi)容,于是呢你也回到寢室準(zhǔn)備開始你的修改,此時的你因為在看了室友小明的遭遇之后,于是就多了一份警惕,你呢就將原先的那份報告
ctr + c,ctrl + v
在當(dāng)前目錄下保留了一份,將原先的這份記為【版本1】,然后拷貝出來的副本修改為【版本2】,然后在版本2上去做一個修改,修改完之后,又拿到物理老師那里。果然,她又指出了其他的一堆問題讓你去繼續(xù)修改 - 回到宿舍后,你也是和上次一樣,將【版本2】進(jìn)行
ctr + c,ctrl + v
在當(dāng)前目錄下保留了一份,然后再【版本3】上面做修改,改了一個晚上,第二天拿去給她看的時候,她依舊是不滿意(一般的老師也不會這樣),于是就說:“張三呀,你和是不是和小明一個宿舍的呀?你們這個報告都寫得差不多,而且都不怎么樣,這樣吧,你把第二份的報告交上來,我給你個成績” - 此時你心中暗暗竊喜,回到宿舍后馬上打開電腦,然后將這個目錄下的【版本2】實驗報告立馬發(fā)給了老師
2、程序員與產(chǎn)品經(jīng)理
在上一個案例的基礎(chǔ)上,我使用【程序員與產(chǎn)品經(jīng)理】的關(guān)系再來解釋一下
- 其實對于學(xué)生來說,可以看作是我們程序員;對于老師來說,可以看作是產(chǎn)品經(jīng)理。當(dāng)我們將業(yè)務(wù)邏輯寫好將代碼上傳的時候,終于歇了一口氣,可以回家休息了。但是過段時間產(chǎn)品經(jīng)理又打電話來說這個地方寫得不對,要你重新寫的時候就會很郁悶,以及有時候和【測試人員】之間都會發(fā)生一些沖突
- 當(dāng)產(chǎn)品經(jīng)理讓你改來改去,發(fā)現(xiàn)這塊功能沒有之前好的時候想讓你重寫改回兩個禮拜前的那個版本,此時若是你沒有提前保存一份的話就【抓瞎】了,又得去重新寫一遍,畢竟我們都是打工人🔧
難道代碼也和實驗報告一樣,使用
ctr + c,ctrl + v
復(fù)制嗎,那萬一代碼多了怎么辦,這就需要有東西可以來專門管理我們的代碼
3、張三的CEO之路 —— 版本管理工具的誕生
是的,故事還沒完,我們接著上面的實驗報告講💬
- 你,也就是【張三】在經(jīng)歷了這一切后,知道了這個老師是怎樣的教學(xué)方式。而且這個老師還要帶張三和他這個班其他的課程,所以張三便害怕再出現(xiàn)這樣反復(fù)修改實驗報告的狼狽樣子🤦?,于是呢他就把這次的實驗報告修改過程經(jīng)歷做了一個總結(jié),保留下來📰
- 他呢也是一個很熱心腸的人,就和其他同學(xué)說:“以后若是這個老師的其他實驗報告,如果不給你通過的話就來找我,把修改前后修改后的版本都保存在我這里,如果想要哪個版本都可以來找我拿。“于是呢越來越多的同學(xué)來找到張三讓他幫忙,到了后面不僅是同班同學(xué),其他專業(yè)、甚至是其他學(xué)院的同學(xué)知道了又張三這么一個人,于是都來找他,此時張三就忙不過來了,和【Linus Torvalds】一樣就是每天Ctrl + c/v。。。
- 于是他也和【Linus Torvalds】一樣開發(fā)出來這么一種軟件,擁有服務(wù)端和客戶端,其他同學(xué)只需要在自己本地做管理,將他們的實驗報告上傳到這個軟件中,就可以實現(xiàn)自己對自己的提交記錄進(jìn)行管理(功能:新建管理文件夾,然后將自己原本的內(nèi)容保存在這個里面,自己可以再做其他修改)。接下去他自己就很方便了,不需要再幫別人做這么多事
- 但是呢他又一想,不光光是我們學(xué)校會出現(xiàn)這樣的老師,像清北、一些985/211的學(xué)生可能也會有這樣的困惑,
于是呢就將自己的這款軟件發(fā)布了出去,推向了全國
,為他取了個名字。之后當(dāng)張三畢業(yè)之后,就開了一家公司,是這家公司的CEO,于是就聯(lián)合其他程序員優(yōu)化了這個軟件,將其部署到Web上,而且開發(fā)了客戶端,客戶可以直接在本地瀏覽操作,界面點(diǎn)擊就可以完成內(nèi)容的托管。- 它就是—— gitee/GitHub【底層基于git】
故事講完了,這其實就是Gitee發(fā)明者故事,它知道了Linux之父發(fā)明了Git,于是便在它的基礎(chǔ)上實現(xiàn)更趨向于大眾化、專業(yè)化的成就,使得大家也可以使用它來進(jìn)行版本的管理
四、如何在Linux上使用Git
我這里以Gitee為例為大家演示一下如果將自己的代碼上傳進(jìn)行托管
1、創(chuàng)建倉庫
- 通過上面的一系列操作將倉庫創(chuàng)建好之后我們就可以將其拷貝到我們的本地倉庫中了。點(diǎn)擊【克隆/下載】中的復(fù)制即可,通過HTTPS的形式將倉庫的頁面地址拷貝下來
2、將倉庫克隆到本地
- 然后我們來到Xshell中的命令行使用
git clone + 倉庫頁面地址
,這樣就可以將遠(yuǎn)端倉庫中的內(nèi)容全部克隆過來,此時我們本地也相當(dāng)于是擁有了這個【GitTest】的倉庫
- 接下去輸入你gitee的用戶名和密碼之后就可以將這個倉庫克隆你的本地了
- 此時我們?nèi)ァ緇s】一下就可以發(fā)現(xiàn)
那這時候就有同學(xué)說了,我把倉庫克隆下來了,那么這個倉庫在哪里呢?它長什么樣?
- 此時我們只需在在這個
git-test
中執(zhí)行一下【ls -la】即可,-l
代表以列表的形式呈現(xiàn)當(dāng)前目錄下的內(nèi)容;-a
表示會顯示隱藏的文件,也就是以.
開頭的文件 - 那么我們就可以看到有一個【.git】的東西被顯示出來,其實它就是我們從遠(yuǎn)端克隆下來的那個倉庫,其實通俗點(diǎn)說它就是一個【目錄/文件夾】
- 其實這個倉庫在我們Windows下也是可以看到的,只需要修改一下【查看】方式中【顯示隱藏的文件、文件夾和驅(qū)動器】便可以看見這個
.git
的倉庫了
那這個倉庫里面有哪些東西呢?我們來看看
- 通過
tree .git
就可以看到這個目錄中的所有內(nèi)容了
- 我們主要來說一下這個通過算法生成的隨機(jī)二進(jìn)制通過到Gitee上觀看可以了解到它就是【本地修改記錄的版本號】
- 然后的話就是【refs (references)】,一些這個倉庫中有關(guān)我們個人的資料
好,到這里,相信你對遠(yuǎn)程倉庫克隆到本地以及對這個克隆過來的倉庫有了一定的了解。其實對于Gitee來說就是【可視化地展現(xiàn)了我們的倉庫】。接下去我們就要去使用一下這個倉庫了👇
3、git三板斧
倉庫克隆到本地之后,我們就可以將自己的代碼托管到這個倉庫中了
① git add
首先進(jìn)行的就是【add】,也就是將當(dāng)前目錄下所有文件添加到倉庫里
② git commit
接下去進(jìn)行的就是【commit】,是提交的意思。是什么提交呢?是真正的提交。把我們修改的內(nèi)容提交到本地倉庫
語法格式:git commit -m "日志"
- 不過可以看到,似乎并沒有提交成功的感覺,而是報出了一些異常的錯誤
- 因為這是我們第一次提交內(nèi)容到Gitee倉庫中,但是人家還不認(rèn)識你,也不會讓你隨便提交什么東西。所以只需要配置一下我們每次提交的【郵箱】和【用戶名】即可
- 然后我們再去【commit】一下就可以看到這兩個文件就被提交到了本地倉庫中
那有同學(xué)問,那我要怎么查看我確實是將這些東西提交到倉庫中了呢🧐
此時我們就可以使用到git log
去查看我們提交的一些日志
- 可以看到,里面就有本次【commit】修改后的版本號,而且還會顯示出我們本次修改的日志。包括更多的還有上面配置的【用戶名】和【郵箱】以及本次提交修改的時間,都是可以查詢到的
溫馨提示:【日志】不要隨便亂寫,要寫你本次修改了什么內(nèi)容
- 對于日志來說,是很重要的,因為記錄了你本次修改倉庫中的什么內(nèi)容,方便以后可以快速查詢到修改的時間和位置
- 你之后在公司里寫好代碼后進(jìn)行上傳也是一樣的,對于日志而言要好好寫,因為之后可能你的領(lǐng)導(dǎo)會看你的代碼、你的同事可能會看你的代碼、你們公司的實習(xí)生也有可能會看到你的戴代碼。此時他們就可以通過查看Gitee上面的提交記錄或者是直接
git log
一下就可以搜索到你之前提交的記錄,這個只要寫了是無法修改的,所以我們對于每一次的代碼修改都要認(rèn)真記錄日志
🎯對于以上我們所做的【add】和【push】,其實已經(jīng)完成了代碼的托管,因為這個倉庫就在我們本地,將代碼放到這個倉庫中,只要我們的服務(wù)器沒壞掉,那都是可以找得到的
🎯此時對應(yīng)的就是張三前面在為同學(xué)服務(wù)時將他們的代碼拷貝到本地電腦中的過程
③ git push
最后要進(jìn)行的就是【push】,為何要push呢,其實也就是將本地倉庫中保存的內(nèi)容推送到遠(yuǎn)程倉庫,讓本地倉庫和遠(yuǎn)端倉庫保持一致
- 剛才說到過,對于本地的倉庫雖然可以起到一個永久的保存,但是難免會出現(xiàn)突發(fā)事故導(dǎo)致本地機(jī)器故障,此時就找不到之前寫的代碼了【當(dāng)然你也可以使用U盤保存,不過U盤也是有使用年限的,不可以一直用過去】
- 但是對虛擬的云端就會一直存在,不會丟失,所以我們可以將本地倉庫中的內(nèi)容進(jìn)行一個推送
- 不過若是你第一次進(jìn)行
git push
的話,就出現(xiàn)上面這樣的警告提示?這點(diǎn)的話是由于你git push
沒有指定分支,只有當(dāng)前分支會被 push 到你使用 git pull 獲取的代碼。
此時運(yùn)行一下上面我框出的兩句git config –global push.default matching
或: git config –global push.default simple
。之后再去【git push】的時候就不會出現(xiàn)類似的問題了
- 然后我們再去【git push】一下就可以發(fā)現(xiàn)不會出現(xiàn)像剛才那樣的問題了,那也就推送成功了( ?? ω ?? )
- 通過來到Gitee上的遠(yuǎn)程倉庫中可以看到我們剛才從本地倉庫【push】上來的內(nèi)容,這也就實現(xiàn)了本地倉庫和遠(yuǎn)端倉庫保持一致
4、有關(guān)git的其他指令
講完了基本的git三板斧后,我們再來說說有關(guān)Linux下git的其他指令操作
- 刪除倉庫中的文件 ——
git rm 文件名
- 查看本地和遠(yuǎn)端之間同步的狀態(tài) ——
git status
- 刪除本地倉庫 ——
git .git rm
- 首先我們來看看如何去刪除倉庫中的文件
- 在刪除掉這個文件之后我們再來看看這個本地倉庫和遠(yuǎn)程倉庫的狀態(tài)
- 所有的操作都展示完了,我們就將這個本地倉庫刪除吧!
- 可以看到,在刪除完后再去
git status
查看狀態(tài)的話就會檢測出來本地的并不是一個git倉庫(repository)
除了刪除本地倉庫,在Gitee上創(chuàng)建的遠(yuǎn)程倉庫也是可以刪除的
- 首先點(diǎn)擊【管理】
- 點(diǎn)擊左側(cè)菜單欄的【刪除倉庫】
- 根據(jù)提示操作即可,輸入內(nèi)容
- 最后再進(jìn)行一下密碼驗證就可以刪除成功了
- 此時返回Gitee的大廳就可以看到我們刪除倉庫的記錄了
五、總結(jié)與提煉
最后來總結(jié)一下本文所學(xué)習(xí)的內(nèi)容
- 首先我們介紹了有關(guān)【git】的相關(guān)知識,知道了它是由Linux之父【Linus Torvalds】在迫于某些需求的時候創(chuàng)建的,git是一款版本控制和多人協(xié)作的軟件
- 然后我們便說到了有關(guān)git的【版本控制】,因為網(wǎng)上大多數(shù)的文章都講解了非常深奧難懂,于是我就使用到一些生活中的小案例來幫助大家理解,不過可不要真的和產(chǎn)品經(jīng)理吵架哦,那就會很麻煩了~
- 最后呢我們就說到了如何在Linux上去使用git,教了大家如何在Gitee上創(chuàng)建倉庫并且將倉庫克隆到本地。然后就可以使用git三板斧將本地的代碼/文件托管到本地倉庫進(jìn)行管理了,但是本地倉庫可能會存在風(fēng)險,所以我們就可以使用第三板斧【push】將本地倉庫中的內(nèi)容推送到遠(yuǎn)端倉庫,實現(xiàn)了一個云端備份
以上就是本文要介紹的所有內(nèi)容,感謝您的觀看