www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]在我們的認(rèn)知范圍Git和SVN都是對(duì)于代碼托管的工具,那么這兩者又有什么不同呢?Git是世界上先進(jìn)的「分布式的版本控制系統(tǒng)」,而SVN是「集中式的版本控制系統(tǒng)」,SVN對(duì)于版本的管理集中于中央服務(wù)器中,而Git對(duì)于版本的管理可以在本地。



Git簡(jiǎn)介

在我們的認(rèn)知范圍Git和SVN都是對(duì)于代碼托管的工具,那么這兩者又有什么不同呢?

Git是世界上先進(jìn)的「分布式的版本控制系統(tǒng)」,而SVN是「集中式的版本控制系統(tǒng)」,SVN對(duì)于版本的管理集中于中央服務(wù)器中,而Git對(duì)于版本的管理可以在本地。

SVN管理的模式從SVN服務(wù)器中拉取代碼,然后開(kāi)始自己的開(kāi)發(fā),開(kāi)發(fā)完后再向SVN服務(wù)器提交代碼,所以集中式的版本管理,需要聯(lián)網(wǎng)才能進(jìn)行,一旦沒(méi)網(wǎng)就沒(méi)辦法向SVN服務(wù)器提交代碼。

而Git是分布式的版本管理,每個(gè)開(kāi)發(fā)者的本地都會(huì)有完整的版本庫(kù),不需要來(lái)聯(lián)網(wǎng),也能進(jìn)行版本的管理和代碼的提交,每個(gè)開(kāi)發(fā)者都可以在本地進(jìn)行提交代碼、查看版本、切換分支等操作。

深入淺出圖解Git,入門到精通(一)

所以相對(duì)于SVN來(lái)說(shuō)Git的存儲(chǔ)也會(huì)相對(duì)比較占用空間,但是以空間換來(lái)了Git對(duì)版本管理的高效,不得不說(shuō)是一種高明的策略。

Git安裝

Git可以安裝在Windows或者Linux,安裝在Windows相信大家都會(huì),基本就是下載軟件,然后傻瓜式操作,再Windows安裝后,就會(huì)有Git GUI Here以及Git Bash Here。

Git Bash Here就是我們用來(lái)敲命令的窗口,打開(kāi)它就可以敲關(guān)于Git的命令進(jìn)行進(jìn)行操作。

Windows的Git下載地址:https://git-scm.com/downloads,在這里下載最新版的進(jìn)行安裝即可。

下面我們來(lái)說(shuō)一下Git再Linux的安裝過(guò)程,要在安裝Git其實(shí)也非常簡(jiǎn)單,可以直接使用yum源進(jìn)行安裝,一句命令就搞定了:

sudo?yum?install?git

Git的配置

安裝完Git后就開(kāi)始對(duì)Git進(jìn)行配置操作,配置自己用戶名和Email,配置的命令如下:

$?git?config?--global?user.name "lidu" //?用戶名
$?git?config?--global?user.email "lidu@example.com" //?填你自己的qq郵箱

配置完信息后,就可以「創(chuàng)建目錄,并且初始化自己的本地倉(cāng)庫(kù)」了:

$?mkdir?github
$ cd github
$ pwd /e/github
$?git?init??//?初始化本地倉(cāng)庫(kù)
Initialized?empty?Git?repository in /e/github/.git/

深入淺出圖解Git,入門到精通(一)我這里已經(jīng)初始化過(guò)了,初始化后會(huì)默認(rèn)在主干上(master),這里為了測(cè)試各種Git的各種命令使用本地的Git倉(cāng)庫(kù)與github進(jìn)行關(guān)聯(lián)。

本地倉(cāng)庫(kù)與Github關(guān)聯(lián)

在你的c盤下面有一個(gè).ssh文件夾,進(jìn)入文件夾里面可以看到有id_rsa.pub和id_rsa兩個(gè)文件,第一個(gè)文件是id_rsa.pub里面的信息是公鑰,而第二個(gè)文件是私鑰。

加入沒(méi)有這兩個(gè)文件,可以使用以下命令進(jìn)行生成:

$?ssh-keygen?-t?rsa?-C "你注冊(cè)的郵箱" 

接著就是把自己的公鑰復(fù)制粘貼配置到Github上的SSH Keys頁(yè)面中,快捷地址:https://github.com/settings/ssh ,

深入淺出圖解Git,入門到精通(一)

深入淺出圖解Git,入門到精通(一)在Github上配置完自己的公鑰后,就可以在Github中創(chuàng)建倉(cāng)庫(kù)進(jìn)行測(cè)試,在Github的右上角中找到:create a new repo,創(chuàng)建一個(gè)新的倉(cāng)庫(kù):

深入淺出圖解Git,入門到精通(一)這樣就簡(jiǎn)單的創(chuàng)建自己的Github的倉(cāng)庫(kù)了,創(chuàng)建完后就可以把自己的本地倉(cāng)庫(kù)文件同步到GitHub中,使用一下命令:

git?remote?add?origin?https://github.com/liduchang/redis.git
git?push?-u?origin?master(由于新建的GitHub倉(cāng)庫(kù)是空的,所以第一次推送master分支時(shí)需要加-u參數(shù),以后再推送就不用加了)

這樣你本地的Reids目錄下的文件與Github進(jìn)行了關(guān)聯(lián),只要在Redis目錄中修改了文件,就可以使用git push origin master推向遠(yuǎn)程的Github倉(cāng)庫(kù)。

這有一點(diǎn)說(shuō)明的就是這里配置的是https的方式,可以配置成ssh的方式,因?yàn)閔ttp上的方式每次推向遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候都會(huì)讓你輸入密碼,有點(diǎn)麻煩:

深入淺出圖解Git,入門到精通(一)切換的方法,如下圖所示,只要跟著下面的命令進(jìn)行操作就能隨意進(jìn)行協(xié)議的切換了,還是比較簡(jiǎn)單的,這里就直接略過(guò):

深入淺出圖解Git,入門到精通(一)

Git原理

上面說(shuō)了那么多就是簡(jiǎn)簡(jiǎn)單單的對(duì)Git進(jìn)行介紹,做一個(gè)簡(jiǎn)單的入門,下面就開(kāi)始Git的原理的深入的剖析。

在Git中有四個(gè)概念:「遠(yuǎn)程倉(cāng)庫(kù)、工作區(qū)、暫存區(qū)、版本庫(kù)」。遠(yuǎn)程倉(cāng)庫(kù)就是我們Git的服務(wù)器,用于存儲(chǔ)已經(jīng)管理團(tuán)隊(duì)的代碼。

工作區(qū)、暫存區(qū)、版本庫(kù)是我們本地的,例如當(dāng)我們初始化git init后,就會(huì)在當(dāng)前的目錄下出現(xiàn).git目錄,「redis目錄就是我們的工作區(qū),而.git目錄是我們的版本庫(kù)所有的版本信息都在這里」。

深入淺出圖解Git,入門到精通(一)在.git目錄下index文件(.git/index),這就是「暫存區(qū)」,叫做stage或者index,index和我們的數(shù)據(jù)庫(kù)的index類似,所以我們有時(shí)候也叫它為「索引」。

這四個(gè)區(qū)域?qū)崿F(xiàn)的原理圖所下所示,使用過(guò)Git的對(duì)于下面的命令再熟悉不過(guò)了。深入淺出圖解Git,入門到精通(一)從原理圖中可以看出代碼可以在不同的level之間轉(zhuǎn)移,也可以跨level之間轉(zhuǎn)移,所有的這些動(dòng)作都是通過(guò)Git的命令去實(shí)現(xiàn)。

初始化的時(shí)候Git還會(huì)自動(dòng)為我們創(chuàng)建第一個(gè)分支master,以及指向master的一個(gè)指針叫做HEAD。

深入淺出圖解Git,入門到精通(一)

克隆項(xiàng)目

在我們實(shí)際的工作環(huán)境中,都會(huì)從服務(wù)器上進(jìn)行克隆項(xiàng)目到本地,Git中使用git clone命令可以進(jìn)行克隆項(xiàng)目:

git clone https://github.com/liduchang/redis

執(zhí)行git clone就會(huì)生成一份副本,在本地倉(cāng)庫(kù)和工作區(qū)都會(huì)同步副本,具體的原理圖如下所示:

深入淺出圖解Git,入門到精通(一)

提交代碼

從上面的圖中我們可以到,代碼可以在不同level之間移動(dòng),高level到低level,或者逆向低level到高level,也可以跨level之間移動(dòng)。

Git中代碼從低level到高leve的移動(dòng)主要依靠以下命令:

  • git add .:文件添加進(jìn)暫存區(qū)。
  • git commit -m "提交信息":文件添加進(jìn)本地倉(cāng)庫(kù),-m參數(shù)改為-am可以直接推向本地倉(cāng)庫(kù)。
  • git push:文件推向遠(yuǎn)程倉(cāng)庫(kù)。

深入淺出圖解Git,入門到精通(一)運(yùn)行git commit -a相當(dāng)于運(yùn)行git add把所有文件加入暫存區(qū),然后再運(yùn)行git commit把文件提交本地倉(cāng)庫(kù)。

代碼回退

那么從高level向低level移動(dòng)代碼的命令如下:

  • git pull:從遠(yuǎn)程倉(cāng)庫(kù)拉取代碼到本地。
  • git reset --files:用本地倉(cāng)庫(kù)覆蓋暫存區(qū)中修改,也就是覆蓋最后一次git add的內(nèi)容。
  • git checkout --files:把文件從暫存區(qū)復(fù)制到工作區(qū),用于放棄本地的修改。
  • git checkout HEAD --files:回退最后一次的提交內(nèi)容。
深入淺出圖解Git,入門到精通(一)

下面我用自己本地與github的操作測(cè)試上面的命令,加深對(duì)上面的命令的理解和使用,當(dāng)我在本地新建一個(gè)github倉(cāng)庫(kù)中沒(méi)有的文件:

深入淺出圖解Git,入門到精通(一)

可以看到文件的顯示Untracked files:未被追蹤的文件,「表示該文件未被git追蹤管理」。

新添加的文件可以通過(guò)「git add添加到在暫存區(qū)」「這樣文件就能夠被git進(jìn)行追蹤」,此時(shí)再使用git status查看文件時(shí),就可以看到兩個(gè)文件已經(jīng)是以new file的形式進(jìn)行顯示:

深入淺出圖解Git,入門到精通(一)

版本回退

若是你想撤銷提交到暫存區(qū)的內(nèi)容,使用git reset,可以撤銷向暫存區(qū)新添加的文件:

深入淺出圖解Git,入門到精通(一)

也可以在使用命令:git reset --hard HEAD^,表示回退上一個(gè)版本,「在Git中HEAD表示當(dāng)前版本,HEAD^表示上一個(gè)版本」,若是有多個(gè)版本,這樣表示就不方便了,可以使用HEAD~10,表示版本的次數(shù)。

在Git每一個(gè)commit都會(huì)有自己的commit的ID,可以通過(guò)git log進(jìn)行查看:

深入淺出圖解Git,入門到精通(一)commit的本質(zhì)就是:「每次Git都會(huì)用暫存區(qū)的文件創(chuàng)建一個(gè)新的提交,把當(dāng)前的分支指向新的提交節(jié)點(diǎn),這樣就完成了一次新的提交」

深入淺出圖解Git,入門到精通(一)若是HEAD指針指向的是bran分支,那么新的節(jié)點(diǎn)就會(huì)成為jh509的子節(jié)點(diǎn),并且形成新的分支:

深入淺出圖解Git,入門到精通(一)

也就可以使用git log --pretty=oneline:直接輸出commit的ID,信息比較簡(jiǎn)短,然后直接指定ID的回退:

$?git?reset?--hard??5567a

當(dāng)你再次檢查你的代碼的時(shí)候就會(huì)回到了id為5567a版本,在Git的版本回退原理中,Git的內(nèi)部有一個(gè)指向當(dāng)前版本的HEAD指針,只要從當(dāng)前版本指回去就行了,所以Git版本的回退是特別快的,只需要移動(dòng)指針,實(shí)現(xiàn)的原理圖如下所示:

深入淺出圖解Git,入門到精通(一)

撤銷修改

丟棄工作區(qū)的修改使用:git checkout -- file命令,這條命令中的--files是不能漏的,若是只是git checkout就表示切換另一條分支的命令了。

在我的本地我直接修改:README.md文件,然后使用git status進(jìn)行查看,他表示文件處于modified狀態(tài):深入淺出圖解Git,入門到精通(一)此時(shí)的README.md文件是還沒(méi)有被添加進(jìn)暫存區(qū)的,可以直接使用以下命令,撤銷掉工作區(qū)的修改:

git?checkout?--?README.md

若是已經(jīng)添加到暫存區(qū)了,使用以下的命令進(jìn)行回撤:

git?reset?HEAD?README.md

上面也演示了git reset命令,它既可以回退版本,又可以把暫存區(qū)的修改回退到工作區(qū)。當(dāng)我們用HEAD時(shí),表示最新的版本。

當(dāng)你提交了修改后,可以使用git diff查看兩次提交之間的變動(dòng),它的本質(zhì)就是「任意比較兩個(gè)倉(cāng)庫(kù)之間的差異」

深入淺出圖解Git,入門到精通(一)

刪除文件

在工作區(qū)直接使用rm fileName,這個(gè)操作和linux的命令一樣,若是文件已經(jīng)提交版本庫(kù),從版本庫(kù)中刪除文件可以使用git rm命令進(jìn)行刪除,然后提交:

$?git?rm?README.md
$?git?commit?-m "remove?README.md" 

若是刪除錯(cuò)了,可以使用git checkout -- README.md進(jìn)行恢復(fù),其原理就是使用版本庫(kù)的文件替換工作區(qū)的文件。

代碼沖突

在團(tuán)隊(duì)中集體使用Git的時(shí)候,每個(gè)人都提交自己的代碼最后合并到主干,總有會(huì)push失敗的時(shí)候,因?yàn)閜ush的本質(zhì):「就是用你本地倉(cāng)庫(kù)的commit記錄去覆蓋遠(yuǎn)程倉(cāng)庫(kù)的commit記錄」。

但是別人提交了一些代碼,而你本地并沒(méi)有這些代碼,這樣代碼就會(huì)被覆蓋,導(dǎo)致別人的commit的記錄就不存在,這個(gè)是絕對(duì)不允許的。

所以,每次push的時(shí)候Git就會(huì)檢查,若是存在這種情況就是push失敗,只要先git pull一下,將本地倉(cāng)庫(kù)與遠(yuǎn)程倉(cāng)庫(kù)先合并一下,最后push就可以成功了,若是文件中已經(jīng)存在在沖突代碼,只要打開(kāi)文件重新解決一下沖突即可。

這是圖解Git的第一篇,限于篇幅,我們下一篇繼續(xù)圖解Git操作,下一期間見(jiàn)。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉