Git相關(guān)知識(shí)點(diǎn)學(xué)習(xí)分享

      網(wǎng)友投稿 895 2022-05-29

      我是辰兮,很高興你能來(lái)閱讀,這篇文章是我初學(xué)Git的相關(guān)學(xué)習(xí)的總結(jié),分享給初學(xué)者參考,如有不足歡迎指出,分享獲取新知,大家一起進(jìn)步。

      文章目錄

      一、什么是Git

      二、 Git和SVN的區(qū)別

      三、Git工作流程

      四、git涉及到的概念詳解

      五、個(gè)人開(kāi)發(fā)常用命令

      一、什么是Git

      1、Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。

      2、 Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件。

      3、 Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持。

      Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒(méi)有之一)

      拓展知識(shí)點(diǎn)

      版本控制器的作用:一個(gè)項(xiàng)目開(kāi)發(fā)期間,需要不停的提交補(bǔ)?。˙UG修復(fù))和建立分支。這些工作繁瑣,并且消耗大量精力。所以需要一個(gè)工具進(jìn)行管理:版本控制器。

      二、 Git和SVN的區(qū)別

      GIT不僅僅是個(gè)版本控制系統(tǒng),它也是個(gè)內(nèi)容管理系統(tǒng)(CMS),工作管理系統(tǒng)等。

      Git 與 SVN 區(qū)別點(diǎn):

      1、GIT是分布式的,SVN不是:這是GIT和其它非分布式的版本控制系統(tǒng),例如SVN,CVS等,最核心的區(qū)別。

      2、GIT把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN是按文件:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個(gè)類(lèi)似.svn,.cvs等的文件夾里。

      3、GIT分支和SVN的分支不同:分支在SVN中一點(diǎn)不特別,就是版本庫(kù)中的另外的一個(gè)目錄。

      4、GIT沒(méi)有一個(gè)全局的版本號(hào),而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個(gè)特征。

      5、GIT的內(nèi)容完整性要優(yōu)于SVN:GIT的內(nèi)容存儲(chǔ)使用的是SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤(pán)故障和網(wǎng)絡(luò)問(wèn)題時(shí)降低對(duì)版本庫(kù)的破壞。

      小結(jié) :分布式 - 存儲(chǔ)數(shù)據(jù)的方式 - 分支 - 版本號(hào) 內(nèi)容完整性

      三、Git工作流程

      參考網(wǎng)上常見(jiàn)的圖解:常見(jiàn)的基礎(chǔ)概念

      Workspace:工作區(qū): 就是你的工作目錄

      Index / Stage:暫存區(qū): 它像個(gè)緩存區(qū)域,臨時(shí)保存你的改動(dòng)

      Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))

      Remote:遠(yuǎn)程倉(cāng)庫(kù)

      ps: 本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)在本質(zhì)上沒(méi)有太大區(qū)別,只不過(guò)一個(gè)是本地電腦,一個(gè)是遠(yuǎn)程電腦.

      工作流程

      1、git clone 克隆遠(yuǎn)程資源到本地目錄,作為工作目錄;克隆

      2、然后在本地的克隆目錄上添加或修改文件;修改

      3、如果遠(yuǎn)程修改了,需要同步遠(yuǎn)程的內(nèi)容,直接git pull就可以更新本地的文件;跟新

      4、本地在修改之后,可以通過(guò)git status 查看修改的文件。然后使用git add 添加修改的文件暫到緩沖區(qū);git add添加到緩存

      5、在添加之后,可以使用git commit添加到當(dāng)前的工作區(qū);git commit添加到工作區(qū)

      6、在修改完成后,如果發(fā)現(xiàn)錯(cuò)誤,可以撤回提交并再次修改并提交;

      7、git push將本地的修改推送到遠(yuǎn)程的git服務(wù)器。git push

      HEAD:相當(dāng)于一個(gè)指針,指向你最近一次提交后的結(jié)果

      git status 查看狀態(tài)

      git add . 添加到暫存區(qū)

      git commit - m"" 用于提交暫存區(qū)的文件

      簡(jiǎn)寫(xiě):git commit -a -m “” 用于提交跟蹤過(guò)的文件,相當(dāng)于git add和git commit -m的組合技

      git log 查看提交歷史

      Git的基本工作流程:修改--暫存--提交更新

      1、在工作目錄中修改文件 2、暫存文件,將文件的快照放入暫存區(qū)域 3、提交更新,找到暫存區(qū)域的文件,將快照永久性存儲(chǔ)到Git倉(cāng)庫(kù)目錄

      1

      2

      3

      4

      5

      關(guān)于遠(yuǎn)程代碼倉(cāng)庫(kù)

      通過(guò)之前對(duì)git代碼倉(cāng)庫(kù)的描述,我們知道git commit其實(shí)只是提交了新版本到本地代碼倉(cāng)庫(kù),要想其他人看到你的改動(dòng),之后必須push到一個(gè)公開(kāi)的server上才可以。實(shí)際上這臺(tái)server上的代碼倉(cāng)庫(kù)和你本地的代碼倉(cāng)庫(kù)并無(wú)二致,只是大家都用這個(gè)server上的代碼倉(cāng)庫(kù)作為標(biāo)準(zhǔn)版本而已。

      四、git涉及到的概念詳解

      1、工作區(qū):就是你在電腦里能看到的目錄。

      2、暫存區(qū):英文叫stage, 或index。一般存放在 “.git目錄下” 下的index文件

      (.git/index)中,所以我們把暫存區(qū)有時(shí)也叫作索引(index)。

      3、版本庫(kù):工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是Git的版本庫(kù)

      Git的三種狀態(tài):

      ①已提交(committed):表示數(shù)據(jù)已經(jīng)安全的保存在本地?cái)?shù)據(jù)庫(kù)中

      ②已修改(modified):表示修改了文件,但還沒(méi)保存到數(shù)據(jù)庫(kù)中

      ③已暫存(staged):表示對(duì)一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中

      如果Git目錄中保存著的特定版本文件,就屬于已提交狀態(tài) 如果作了修改并已放入暫存區(qū)域,就屬于已暫存狀態(tài) 如果自上次取出后,作了修改但還沒(méi)有放到暫存區(qū)域,就是已修改狀態(tài)

      1

      2

      3

      4

      5

      初次接觸:我的困惑關(guān)于master分支和develop分支區(qū)別

      master分支和develop分支

      首先要知道m(xù)aster和develop并行。

      master上始終是最穩(wěn)定的代碼,develop是正在開(kāi)發(fā)的代碼。

      master分支:master分支只負(fù)責(zé)管理發(fā)布的狀態(tài)。在提交時(shí)使用標(biāo)簽記錄發(fā)布版本號(hào)。

      develop分支:develop分支是針對(duì)發(fā)布的日常開(kāi)發(fā)分支。剛才我們已經(jīng)講解過(guò)有合并分支的功用。

      拓展案例:多分支A、B、C并行開(kāi)發(fā)時(shí)合并策略

      Git相關(guān)知識(shí)點(diǎn)學(xué)習(xí)分享

      場(chǎng)景描述:

      項(xiàng)目AB分支同時(shí)進(jìn)行開(kāi)發(fā)時(shí),A分支開(kāi)發(fā)過(guò)程中有其他分支B上線(xiàn),并且B分支上線(xiàn)版本已同步(merge)到master,則須合并已上線(xiàn)版本到正在開(kāi)發(fā)的分支A上,避免A分支上線(xiàn)時(shí)覆蓋B分支的代碼,導(dǎo)致功能倒退。

      命令行合并步驟:

      1.切換到開(kāi)發(fā)分支A:

      git checkout 【開(kāi)發(fā)分支】

      2.合并master到開(kāi)發(fā)分支(因?yàn)锽已經(jīng)同步到master,于是將master合并到A,保證A上涵蓋B以上線(xiàn)的最新代碼):

      git merge --no-ff master

      3.將合并后代碼推送到遠(yuǎn)程庫(kù):

      git push origin 【開(kāi)發(fā)分支】

      五、個(gè)人開(kāi)發(fā)常用命令

      以下總結(jié)了Git常見(jiàn)的開(kāi)發(fā)命令并進(jìn)行了解釋

      git init : 初始化本地項(xiàng)目

      將本地項(xiàng)目初始化 git 項(xiàng)目,直觀(guān)表現(xiàn)是在該項(xiàng)目同級(jí)目錄下多了 .git 隱藏目錄,其存儲(chǔ)著 git 版本庫(kù)相關(guān)信息.此后當(dāng)前項(xiàng)目便具備了本地管理的能力,可以與 git 進(jìn)行交互.

      git clone : 克隆遠(yuǎn)程項(xiàng)目

      同 git init 一樣的作用,也是創(chuàng)建本地倉(cāng)庫(kù),只不過(guò) git init 是直接將本地項(xiàng)目作為本地倉(cāng)庫(kù),而git clone 是將遠(yuǎn)程項(xiàng)目克隆到本地并作為本地倉(cāng)庫(kù). 由此可見(jiàn),git clone 比 git init 多了一層遠(yuǎn)程倉(cāng)庫(kù)的概念.

      git add : 添加文件

      將工作區(qū)的提交記錄添加到暫存區(qū),暫存區(qū)是工作區(qū)和版本庫(kù)交互的橋梁,暫存區(qū)積累到一定量的提交記錄時(shí)可以批量提交到版本庫(kù),這一點(diǎn)暫存區(qū)有點(diǎn)像緩存.

      git commit : 提交文件

      將暫存區(qū)的版本提交到版本庫(kù),從而形成工作區(qū)->暫存區(qū)->版本庫(kù)的基本鏈路,本地工作區(qū)的版本控制流程大致如此.

      git push : 推送文件

      如果是使用 git clone 命令克隆的本地項(xiàng)目,當(dāng)工作到一定程度時(shí)可能需要將這部分工作成果推送到遠(yuǎn)程倉(cāng)庫(kù),這時(shí)候使用 git push命令完成本地版本的推送流程.

      特殊情況

      如果是使用 git init命令初始化的本地項(xiàng)目,可能沒(méi)有遠(yuǎn)程倉(cāng)庫(kù),自然也就不需要推送.如果后來(lái)創(chuàng)建了遠(yuǎn)程倉(cāng)庫(kù),那么你自然是想要將本地倉(cāng)庫(kù)推送到遠(yuǎn)程倉(cāng)庫(kù)的,因此你需要準(zhǔn)確告訴 git 你要推送到哪個(gè)遠(yuǎn)程倉(cāng)庫(kù).

      使用 git remote add origin git@github.com:username/repos.git ;命令添加遠(yuǎn)程倉(cāng)庫(kù)信息,這樣就建立了本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)的關(guān)聯(lián),以后就可以正常推送到遠(yuǎn)程倉(cāng)庫(kù)了.

      關(guān)于分支相關(guān)操作:

      1、查看分支:git branch -a

      2、創(chuàng)建分支,加上-b上創(chuàng)建完分支后,切換的新的分支工作:git checkout -b dev

      這時(shí)候修改的文件都是在dev分支,不會(huì)對(duì)master分支的文件進(jìn)行修改。

      3、合并分支

      git checkout master

      git merge dev

      The best investment is to invest in yourself

      2020.05.14 記錄辰兮的第64篇博客

      Git 分布式

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生怎么可以連計(jì)算機(jī)發(fā)展史都不知道
      下一篇:谷歌(Chrome)瀏覽器插件開(kāi)發(fā)教程
      相關(guān)文章
      亚洲 另类 无码 在线| 亚洲狠狠色丁香婷婷综合| www.亚洲一区| 国产精品亚洲色婷婷99久久精品| 亚洲精品乱码久久久久久V| 亚洲高清一区二区三区| 亚洲AV无码专区在线亚| 亚洲AV无码专区在线亚| 久久精品国产亚洲αv忘忧草| 亚洲成人在线免费观看| 国产成人精品日本亚洲直接 | 亚洲av无码电影网| 亚洲二区在线视频| 中文字幕亚洲综合小综合在线 | 精品亚洲国产成人| 亚洲人成人网毛片在线播放| 中文字幕乱码亚洲精品一区| 亚洲啪AV永久无码精品放毛片| 亚洲精品无码你懂的| 亚洲av无码专区首页| 国产亚洲综合久久| 亚洲精品tv久久久久| 中文字幕亚洲图片| 亚洲国产精品无码专区在线观看| 国产成人亚洲综合色影视| 亚洲国产精久久久久久久| 亚洲高清视频在线播放| 亚洲国产成人手机在线电影bd| 亚洲youjizz| 亚洲日韩在线中文字幕综合 | 亚洲激情视频网站| 色婷五月综激情亚洲综合| 亚洲精品美女久久久久久久| 高清在线亚洲精品国产二区| 亚洲中文字幕视频国产| 亚洲国产成人片在线观看无码| 久久国产亚洲精品无码| 97久久国产亚洲精品超碰热| 亚洲av永久无码| 国外亚洲成AV人片在线观看| 久久亚洲精品AB无码播放|