一、Git概述??
Git官網(wǎng)
Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于跟蹤文件的變化和協(xié)作開(kāi)發(fā)。它允許多個(gè)開(kāi)發(fā)者在同一項(xiàng)目中共同工作,并能夠有效地管理代碼的版本和歷史記錄。Git可以幫助開(kāi)發(fā)團(tuán)隊(duì)更好地協(xié)作,追蹤代碼變更,并且可以在需要時(shí)輕松地回滾到之前的版本。
1.1 什么是版本控制
版本控制是一種管理文件變化的系統(tǒng),它可以跟蹤文件的修改、添加和刪除,并記錄這些變化的歷史。版本控制系統(tǒng)可以幫助團(tuán)隊(duì)協(xié)作開(kāi)發(fā),確保每個(gè)人都在同一個(gè)代碼基礎(chǔ)上工作,并且可以輕松地查看和恢復(fù)文件的不同版本。它還可以提供分支和合并功能,允許多個(gè)開(kāi)發(fā)者并行地修改代碼,并將這些修改合并到一個(gè)共同的代碼庫(kù)中。版本控制系統(tǒng)可以提高開(kāi)發(fā)效率,減少錯(cuò)誤,并且有助于保持代碼庫(kù)的整潔和可維護(hù)性。
1.2 版本控制工具
一些常見(jiàn)的版本控制工具包括:
- Git(GPT-3.5)
- Subversion(SVN)
- Mercurial
- Perforce
- CVS(Concurrent Versions System)
- Bazaar
版本控制工具又分為集中式版本控制工具和分布式版本控制工具
集中式版本控制工具
集中化的版本控制系統(tǒng)諸如CVS、SVN等,都有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過(guò)客戶端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新。多年以來(lái),這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法。
這種做法帶來(lái)了許多好處,每個(gè)人都可以在一定程度上看到項(xiàng)目中的其他人正在做些什么。而管理員也可以輕松掌控每個(gè)開(kāi)發(fā)者的權(quán)限,并且管理一個(gè)集中化的版本控制系統(tǒng),要遠(yuǎn)比在各個(gè)客戶端上維護(hù)本地?cái)?shù)據(jù)庫(kù)來(lái)得輕松容易。
事分兩面,有好有壞。這么做顯而易見(jiàn)的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障。如果服務(wù)器宕機(jī)一小時(shí),那么在這一小時(shí)內(nèi),誰(shuí)都無(wú)法提交更新,也就無(wú)法協(xié)同工作
分布式版本控制工具
像Git這種分布式版本控制工具,客戶端提取的不是最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整地鏡像下來(lái)(本地庫(kù))。這樣任何一處協(xié)同工作用的文件發(fā)生故障,事后都可以用其他客戶端的本地倉(cāng)庫(kù)進(jìn)行恢復(fù)。因?yàn)槊總€(gè)客戶端的每一次文件提取操作,實(shí)際上都是一次對(duì)整個(gè)文件倉(cāng)庫(kù)的完整備份。
分布式的版木控制系統(tǒng)山現(xiàn)之后,解決了集中式版木控制系統(tǒng)的缺陷:
-
服務(wù)器斷網(wǎng)的情況下也可以進(jìn)行開(kāi)發(fā)(因?yàn)榘姹究刂剖窃诒镜剡M(jìn)行的)
-
每個(gè)客戶端保存的也都是整個(gè)完整的項(xiàng)目(包含歷史記錄,更加安全)
1.3 Git簡(jiǎn)史
Git是由Linus Torvalds于2005年創(chuàng)立的分布式版本控制系統(tǒng)。Git的歷史可以追溯到Linux內(nèi)核開(kāi)發(fā)過(guò)程中對(duì)版本控制系統(tǒng)的需求。在此之前,Linux內(nèi)核的開(kāi)發(fā)使用BitKeeper作為版本控制工具,但隨著一些爭(zhēng)議的出現(xiàn),Linux社區(qū)需要一個(gè)開(kāi)源的替代方案。
因此,Linus Torvalds開(kāi)發(fā)了Git,并于2005年發(fā)布了首個(gè)版本。Git的設(shè)計(jì)目標(biāo)是速度、數(shù)據(jù)完整性和分布式架構(gòu)。它的發(fā)展得到了全球開(kāi)發(fā)者社區(qū)的廣泛支持,成為了目前最流行的版本控制系統(tǒng)之一。
Git的發(fā)展歷程中,不斷得到改進(jìn)和擴(kuò)展,吸引了全球開(kāi)發(fā)者的參與,形成了一個(gè)龐大的生態(tài)系統(tǒng)。今天,Git已經(jīng)成為了許多開(kāi)源項(xiàng)目和商業(yè)項(xiàng)目的首選版本控制工具。
1.4 Git工作機(jī)制
工作區(qū)指的是存放代碼的磁盤(pán)位置
1.5 Git和代碼托管中心
代碼托管中心是基于網(wǎng)絡(luò)服務(wù)器的遠(yuǎn)程代碼倉(cāng)庫(kù),一般我們簡(jiǎn)單稱為遠(yuǎn)程庫(kù)。
局域網(wǎng):
- GitLab
互聯(lián)網(wǎng):
- GitHub
- Gitee
二、Git安裝??
根據(jù)自己的電腦選擇合適的Git版本,本機(jī)為windows10 64位,基本上無(wú)腦下一步安裝就行
選Vim就行,Notepad++也行
其它的不用改,直接下一步,然后安裝,安裝完成后,鼠標(biāo)右鍵會(huì)有Git
git --version #查看git版本信息
三、Git常用命令??
命令名稱 | 作用 |
---|---|
git config --global user.name 用戶名 | 設(shè)置用戶簽名 |
git config --global user.email 郵箱 | 設(shè)置用戶簽名 |
git init | 初始化本地庫(kù) |
git status | 查看本地庫(kù)狀態(tài) |
git add 文件名 | 添加到暫存區(qū) |
git commit -m"日志信息" 文件名 | 提交到本地庫(kù) |
git reflog | 查看歷史記錄 |
git reset–hard 版本號(hào) | 版本號(hào)版本穿梭 |
3.1 設(shè)置簽名
右鍵打開(kāi)Git Bash輸入
git config --global user.name "笑的像個(gè)child"
git config --global user.email "xxxxx@qq.com(自己的郵箱)"
3.2 初始化本地庫(kù)
創(chuàng)建一個(gè)git-demo文件夾(后面的實(shí)驗(yàn)都基于這個(gè)文件夾),并右鍵進(jìn)入git bash,并輸入初始化命令
git init
可以看到當(dāng)前目錄存在.git文件夾(看不到是因?yàn)樗J(rèn)是隱藏的)
3.3 查看本地庫(kù)狀態(tài)
git status
新增文件
在git-demo下創(chuàng)建一個(gè)hello.txt文件,并在其中寫(xiě)入一行hello git,關(guān)閉并保存
再次查看本地庫(kù)的狀態(tài),此時(shí)文件還只存在于工作區(qū),并未添加至?xí)捍鎱^(qū)。
3.4 添加暫存區(qū)
將文件添加至?xí)捍鎱^(qū),輸入命令
git add hello.txt
也可以使用
git add . # .的意思是添加所有文件至?xí)捍鎱^(qū)。
添加完成后,再次查看本地庫(kù)狀態(tài)
此時(shí),git已經(jīng)追蹤到了文件,此時(shí)如果你不想保存一個(gè)歷史版本,是可以刪除掉的。
git rm --cached hello.txt #將文件從暫存區(qū)刪除(此時(shí)還沒(méi)有記錄歷史版本,只有commit時(shí)才會(huì)有歷史版本)
此處只是做實(shí)驗(yàn),測(cè)試刪除暫存區(qū)的文件,刪除后,重新添加至?xí)捍鎱^(qū),為后面的實(shí)驗(yàn)做準(zhǔn)備
3.5 提交本地庫(kù)
git commit -m "第一次提交" hello.txt
提交完成后,再次查看本地庫(kù)狀態(tài),暫存區(qū)已經(jīng)沒(méi)有文件了
查看歷史版本信息,
git reflog #查看歷史版本
git log #可以查看更詳細(xì)的提交日志
3.6 修改文件
修改hello.txt中的內(nèi)容(只在第一行新增了一段字符串),再查看本地庫(kù)狀態(tài),提示文件被修改
追蹤修改添加至?xí)捍鎱^(qū)
提交本地庫(kù),并查看歷史版本詳細(xì)日志
提交文件后,提示一個(gè)文件被修改,一行新增,一行刪除,是因?yàn)間it中通過(guò)行來(lái)維護(hù)文件,修改一行,它無(wú)法表示,它是把修改之前的那一行刪掉,再把修改之后的一行的內(nèi)容新增進(jìn)來(lái)。
3.7 歷史版本
查看歷史版本
git reflog #查看版本信息
git log #查看版本詳細(xì)信息
版本穿梭
穿梭回第一個(gè)版本,并查看文件,已經(jīng)回到第一個(gè)版本
git reset --hard "歷史版本號(hào)"
穿梭回第二次提交的版本
四、Git分支操作??
命令名稱 | 作用 |
---|---|
git branch 分支名 | 創(chuàng)建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切換分支 |
git merge 分支名 | 把指定的分支合并到當(dāng)前分支上 |
4.1 分支概述
Git分支是在Git版本控制系統(tǒng)中用于并行開(kāi)發(fā)和管理不同功能或版本的代碼的重要概念。分支可以讓開(kāi)發(fā)者在不影響主線代碼的情況下,獨(dú)立地進(jìn)行開(kāi)發(fā)、測(cè)試和修改。在Git中,主要的分支是master(或main)分支,它包含了項(xiàng)目的主要代碼。除了主分支外,開(kāi)發(fā)者可以創(chuàng)建其他分支,比如feature分支用于開(kāi)發(fā)新功能,bugfix分支用于修復(fù)bug,release分支用于發(fā)布版本等。
分支的優(yōu)勢(shì)在于它能夠提供一種安全的方式來(lái)進(jìn)行并行開(kāi)發(fā),避免了直接在主分支上進(jìn)行修改可能帶來(lái)的風(fēng)險(xiǎn)。同時(shí),分支也可以幫助團(tuán)隊(duì)協(xié)作,每個(gè)成員可以在自己的分支上進(jìn)行開(kāi)發(fā),最后合并到主分支上。
在Git中,創(chuàng)建、切換、合并、刪除分支都是非常簡(jiǎn)單的操作,開(kāi)發(fā)者可以根據(jù)需要隨時(shí)創(chuàng)建新的分支,并在不同分支之間切換,以便進(jìn)行不同的工作。因此,合理地使用分支可以幫助開(kāi)發(fā)團(tuán)隊(duì)更高效地進(jìn)行代碼管理和開(kāi)發(fā)工作。
4.2 查看分支
git branch -v #查看當(dāng)前存在的的分支
4.3 創(chuàng)建分支
創(chuàng)建hot-fix分支后,再查看當(dāng)存在的分支(當(dāng)前還是在master分支)
git branch "分支名"
4.4 切換分支
從master分支切換到hot-fix分支上
git checkout hot-fix
分支已從master分支切換到hot-fix分支
4.5 修改分支
當(dāng)前在hot-fix分支上,修改hello.txt文件,并將其提交本地庫(kù)
4.6 分支合并
正常合并
git merge hot-fix
沖突合并
**沖突產(chǎn)生的原因:**合并分支時(shí),兩個(gè)分支在同一個(gè)文件的同一個(gè)位置有兩套完全不同的修改。Git無(wú)法替我們決定使用哪一個(gè)。必須人為決定新代碼內(nèi)容
先在master分支下修改文件,然后切換到hot-fix分支下,然后再在同一行修改文件(修改內(nèi)容可以隨意),然后切換回master分支合并hot-fix分支
查看本地庫(kù)狀態(tài)
此時(shí)需要手動(dòng)合并代碼
查看hello.txt文件
解決沖突
將特殊符號(hào)刪除,然后保留需要的片段,此處兩段同時(shí)保留
重新提交文件
此時(shí)commit不能帶文件名?。?!不能帶文件名?。?!不能帶文件名?。?!
五、團(tuán)隊(duì)協(xié)作??
5.1 團(tuán)隊(duì)協(xié)作機(jī)制
團(tuán)隊(duì)內(nèi)協(xié)作
簡(jiǎn)述:A和B是同一團(tuán)隊(duì)的成員,A將代碼push至代碼遠(yuǎn)程倉(cāng)庫(kù),B可以將其clone下來(lái)然后修改,再push到遠(yuǎn)程倉(cāng)庫(kù),A就可以pull下B修改的部分代碼。
跨團(tuán)隊(duì)協(xié)作
A和C是同一開(kāi)源項(xiàng)目的團(tuán)隊(duì)成員,B并不是,B覺(jué)得A的團(tuán)隊(duì)寫(xiě)的代碼不夠好,然后就fork了一份完整的代碼(整個(gè)庫(kù)),然后clone至本地,B將其修改優(yōu)化后又push到他的遠(yuǎn)程倉(cāng)庫(kù),然后發(fā)起pull request,開(kāi)源團(tuán)隊(duì)進(jìn)行審核,覺(jué)得B寫(xiě)的很好,就將他的代碼進(jìn)行merge,然后開(kāi)源團(tuán)隊(duì)又將自己的代碼進(jìn)行更新。
六、Gitee操作??
6.1 推送本地庫(kù)到遠(yuǎn)程庫(kù)
GitHub這兩天打開(kāi)的實(shí)在是太慢了,我梯子又過(guò)期了,在此就使用Gitee進(jìn)行演示了,都大差不差。
進(jìn)入Gitee的個(gè)人主頁(yè)點(diǎn)擊創(chuàng)建
填寫(xiě)倉(cāng)庫(kù)基本信息,然后創(chuàng)建
設(shè)置別名
git remote add "別名" "鏈接"
推送至遠(yuǎn)程倉(cāng)庫(kù)
git push git-test master
在本地修改了文件后還是先將其提交暫存區(qū),本地庫(kù),然后再push一下就可以了
查看gitee倉(cāng)庫(kù)存在推送的文件
6.2 拉取遠(yuǎn)程庫(kù)到本地
此時(shí)遠(yuǎn)程庫(kù)的文件內(nèi)容和本地的是不一致的
在git-demo中打開(kāi)git,輸入拉取的命令
git pull "遠(yuǎn)程倉(cāng)庫(kù)的別名或鏈接" "分支名"
此時(shí),本地的hello.txt文件已經(jīng)更新和遠(yuǎn)程庫(kù)的文件內(nèi)容一致
6.3 克隆遠(yuǎn)程庫(kù)到本地庫(kù)
拉取遠(yuǎn)程庫(kù)
先在自己電腦上隨意找一個(gè)沒(méi)有文件的位置,然后打開(kāi)git
git clone "復(fù)制的鏈接"
倉(cāng)庫(kù),文件都克隆成功
其它的項(xiàng)目都是這樣,復(fù)制鏈接然后clone
七、自建GitLab代碼托管平臺(tái)??
GitLab官網(wǎng)
GitLab的歷史可以追溯到2011年,當(dāng)時(shí)由荷蘭的程序員Sytske Sijbrandij和Dmitriy Zaporozhets共同創(chuàng)建了GitLab。最初,GitLab是作為一個(gè)開(kāi)源項(xiàng)目發(fā)布的,旨在提供一個(gè)基于Web的Git倉(cāng)庫(kù)管理工具,以及一系列的協(xié)作工具,例如問(wèn)題跟蹤、持續(xù)集成和部署等。
隨著時(shí)間的推移,GitLab逐漸獲得了越來(lái)越多的用戶和開(kāi)發(fā)者的支持。2013年,GitLab發(fā)布了第一個(gè)企業(yè)版,為企業(yè)用戶提供了更多的高級(jí)功能和支持服務(wù)。2015年,GitLab發(fā)布了自托管版本,使用戶可以在自己的服務(wù)器上部署和運(yùn)行GitLab。
GitLab持續(xù)不斷地進(jìn)行更新和改進(jìn),增加了許多新的功能和工具,如持續(xù)集成、持續(xù)部署、代碼審查等,使其成為一個(gè)功能強(qiáng)大的代碼管理平臺(tái)。2017年,GitLab完成了一輪高達(dá)2000萬(wàn)美元的融資,進(jìn)一步加速了其發(fā)展。
至今,GitLab已經(jīng)成為了全球范圍內(nèi)廣受歡迎的代碼托管和協(xié)作工具,擁有龐大的用戶群和開(kāi)發(fā)者社區(qū)。它的開(kāi)源版本和企業(yè)版都得到了廣泛的應(yīng)用,為軟件開(kāi)發(fā)團(tuán)隊(duì)提供了全面的解決方案。GitLab的發(fā)展歷程充分展示了其不斷創(chuàng)新和改進(jìn)的精神,以及對(duì)用戶需求的不斷關(guān)注和滿足。
7.1 服務(wù)器安裝GitLab
GitLab下載安裝_GitLab最新中文官網(wǎng)免費(fèi)版下載-極狐GitLab
本人使用的是一臺(tái)Centos7的服務(wù)器
下載/安裝極狐GitLab
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
開(kāi)始安裝
EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-jh
此處"http://gitlab.example.com"修改為服務(wù)器的地址并指定端口號(hào)
建議大家使用內(nèi)存大一點(diǎn)的服務(wù)器,我的已經(jīng)掛了,后續(xù)演示放在下一篇文章??????
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-805971.html
參考資料
01_尚硅谷_Git_課程介紹_嗶哩嗶哩_bilibili文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-805971.html
到了這里,關(guān)于Git入門(mén)詳細(xì)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!