柚子快報(bào)邀請(qǐng)碼778899分享:小烏龜操作Git【全】
柚子快報(bào)邀請(qǐng)碼778899分享:小烏龜操作Git【全】
目錄
小烏龜操作Git【全】
1、選擇小烏龜作為git客戶端2、軟件
2.1、軟件安裝
git安裝:TortoiseGit安裝:漢化包安裝3、Git
3.1、概念
3.2.1、版本庫(kù)和工作目錄3.2、Git的使用步驟
1、創(chuàng)建版本庫(kù)2、添加文件3.工作區(qū)和暫存區(qū)
默認(rèn)分支master為什么需要暫存區(qū)4、修改文件
查看修改歷史
比較版本差異導(dǎo)出指定版本還原修改[風(fēng)險(xiǎn)版本和安全版本]5、刪除文件
刪除文件第一種方式刪除文件第二種方式4、將java工程提交到版本庫(kù)
1、創(chuàng)建版本庫(kù)2、將文件添加到版本庫(kù)
忽略文件3、提交代碼到本地倉(cāng)庫(kù)5、以上步驟總結(jié)6、遠(yuǎn)程倉(cāng)庫(kù)
6.1、HTTP協(xié)議
6.1.1、使用tortoiseGit同步代碼到遠(yuǎn)程倉(cāng)庫(kù)6.2、SSH協(xié)議
6.2.1、SSH秘鑰生成6.2.2、秘鑰設(shè)置6.2.3、使用ssh協(xié)議同步到遠(yuǎn)程倉(cāng)庫(kù)
6.2.3.1、使用tortoiseGit同步本地代碼到遠(yuǎn)程倉(cāng)庫(kù)7、從遠(yuǎn)程倉(cāng)庫(kù)獲取克隆代碼8、從遠(yuǎn)程倉(cāng)庫(kù)獲取拉取代碼
8.1、版本沖突9、分支介紹
9.1、使用TortoiseGit實(shí)現(xiàn)分支管理
1、創(chuàng)建分支2、合并分支3、刪除分支總結(jié)
1、選擇小烏龜作為git客戶端
最近使用idea來(lái)操作git的時(shí)候頻頻出現(xiàn)問(wèn)題,要么是提交代碼的時(shí)候少了某些文件,導(dǎo)致克隆下來(lái)無(wú)法運(yùn)行,要么是提交速度太慢。
反正是在idea中操作git體驗(yàn)非常不好,所以決定來(lái)?yè)Q一種方式來(lái)操作git。從網(wǎng)上搜索一番之后,決定使用小烏龜來(lái)進(jìn)行操作。
2、軟件
下面是全面使用流程,從git安裝、小烏龜安裝軟件到語(yǔ)言安裝包,這里做一個(gè)詳細(xì)的配置截圖。
2.1、軟件安裝
這里的軟件安裝包對(duì)應(yīng)的百度網(wǎng)盤(pán)鏈接:
鏈接:百度網(wǎng)盤(pán) 請(qǐng)輸入提取碼?提取碼:16l0
git安裝:
除了修改一下對(duì)應(yīng)的安裝路徑之外,全程不用做任何操作。永遠(yuǎn)下一步,安裝完畢即可。
安裝完畢之后,輸入命令檢查一下是否安裝成功。
git --version
同時(shí)在空白區(qū)域右擊鼠標(biāo),可以看到git gui和git bash等命令。
在git bash窗口中操作等同于操作于Linux。
TortoiseGit安裝:
除了修改一下對(duì)應(yīng)的安裝路徑、配置git的賬號(hào)和密碼之外,全程下一步;
在TortoiseGit安裝過(guò)程中有一步需要配置一下git的賬號(hào)和郵箱,隨便在一個(gè)位置打開(kāi)Git bash ,輸入以下命令:
git config user.name
git config user.email
即可看到對(duì)應(yīng)的賬號(hào)和郵箱,配置上即可。
在空白區(qū)域右擊,可以看到幾個(gè)TortoiseGit標(biāo)志選項(xiàng)。
漢化包安裝
全程下一步即可。語(yǔ)言包安裝完畢后可以在TortoiseGit的”設(shè)置”中調(diào)整語(yǔ)言,設(shè)置language為中文簡(jiǎn)體。
3、Git
Git是分布式版本控制系統(tǒng),那么它就沒(méi)有中央服務(wù)器的,每個(gè)人的電腦就是一個(gè)完整的版本庫(kù),這樣,工作的時(shí)候就不需要聯(lián)網(wǎng)了,因?yàn)榘姹径际窃谧约旱碾娔X上。既然每個(gè)人的電腦都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比如說(shuō)自己在電腦上改了文件A,可以將文件A提交到本地版本庫(kù);其他人也在電腦上改了文件A,也可以將文件A提交到自己的本地版本庫(kù),這時(shí),你們倆之間只需把本地版本庫(kù)的內(nèi)容各自的修改推送給對(duì)方(使用共享版本庫(kù),例如github、碼云...),就可以互相看到對(duì)方的修改了。
3.1、概念
3.2.1、版本庫(kù)和工作目錄
版本庫(kù)又名倉(cāng)庫(kù),英文名repository,你可以簡(jiǎn)單理解成一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來(lái),每個(gè)文件的新增、修改、刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來(lái)某個(gè)時(shí)刻可以“還原”。由于git是分布式版本管理工具,所以git在不需要聯(lián)網(wǎng)的情況下也具有完整的版本管理能力。
創(chuàng)建一個(gè)版本庫(kù)非常簡(jiǎn)單,可以使用git bash也可以使用TortoiseGit。首先,選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空目錄(F:\repository)。
這時(shí)候直接使用TortoiseGit來(lái)創(chuàng)建
版本庫(kù)創(chuàng)建成功,會(huì)在此目錄下創(chuàng)建一個(gè).git的隱藏目錄(叫做版本庫(kù)),如下所示:
版本庫(kù):這個(gè).git就是版本庫(kù),將來(lái)文件都需要保存到版本庫(kù)中。
工作目錄(工作區(qū)):包含“.git”目錄的目錄,也就是.git目錄的上一級(jí)目錄就是工作目錄。只有工作目錄中的文件或者是文件夾才能保存到版本庫(kù)中。
3.2、Git的使用步驟
1:創(chuàng)建版本庫(kù)
2:添加文件
3:修改文件
4:刪除文件
5:刪除文件并保留副本
6:將java工程提交到版本庫(kù)
7:忽略文件(提交版本庫(kù)時(shí),可忽略某些文件)
1、創(chuàng)建版本庫(kù)
參考著上面的創(chuàng)建過(guò)程。
2、添加文件
在F:\repository目錄下創(chuàng)建一個(gè)mytest.txt文件
文本文件變?yōu)閹А?”號(hào)的圖標(biāo),表示該文件被放置到暫存區(qū)中:
3.工作區(qū)和暫存區(qū)
Git和其他版本控制系統(tǒng)如SVN的一個(gè)不同之處就是有暫存區(qū)的概念。
什么是工作區(qū)(Working Directory)?
? 工作區(qū)就是你在電腦里能看到的目錄,比如我的reporstory/repo1文件夾就是一個(gè)工作區(qū)。
什么是版本庫(kù)?
? 在這個(gè)工作區(qū)目錄中的“.git”隱藏文件夾是版本庫(kù)。
? Git的版本庫(kù)里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD?!局v到分支的時(shí)候再來(lái)說(shuō)這個(gè)】
如下圖所示:
這里的stage就是暫存區(qū),master代表是主分支。
我們把文件往Git版本庫(kù)里添加的時(shí)候,是分兩步執(zhí)行的:
第一步是用git add把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支(默認(rèn)是master)?!竞笃谥v解提交到分支上】
默認(rèn)分支master
因?yàn)槲覀儎?chuàng)建Git版本庫(kù)時(shí),Git自動(dòng)為我們創(chuàng)建了唯一一個(gè)master分支,所以,現(xiàn)在,git commit就是往master分支上提交更改。
把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支可以簡(jiǎn)單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改
查看版本庫(kù),可點(diǎn)擊“版本庫(kù)瀏覽器”
mytest.txt就是在當(dāng)前版本庫(kù)中提交到本地倉(cāng)庫(kù)中的文件。
如果只是添加到了暫存區(qū),那么版本庫(kù)瀏覽器是看不到提交了的文件的。
為什么需要暫存區(qū)
我們這樣子來(lái)進(jìn)行思考,要開(kāi)發(fā)一個(gè)功能需要一周時(shí)間,所以每天都需要來(lái)做點(diǎn)事情,但是不可能說(shuō)每天開(kāi)發(fā)完成之后都要將代碼提交到遠(yuǎn)程倉(cāng)庫(kù)。如果別人拉取了最新代碼,而且進(jìn)行了上線,那么將會(huì)來(lái)造成錯(cuò)誤?!酒鋵?shí)這里來(lái)使用分支介紹比較好】
所以需要一個(gè)臨時(shí)區(qū)域存儲(chǔ)的地方來(lái)存儲(chǔ)修改的代碼,然后在將代碼修改完成之后,提交到分支上去。這樣的一個(gè)流程來(lái)說(shuō)是比較合適的。
4、修改文件
被版本庫(kù)管理的文件不可避免的要發(fā)生修改,此時(shí)只需要直接對(duì)文件修改即可。修改完畢后需要將文件的修改提交到版本庫(kù)。
對(duì)文件進(jìn)行修改之后,沒(méi)有添加文件時(shí)候的添加到暫存區(qū),而且會(huì)有紅色的感嘆號(hào)標(biāo)識(shí)已經(jīng)修改。
在mytest.txt文件上點(diǎn)擊右鍵,然后選擇“提交”:
查看修改歷史
在開(kāi)發(fā)過(guò)程中可能會(huì)經(jīng)常查看代碼的修改歷史,或者叫做修改日志。來(lái)查看某個(gè)版本是誰(shuí)修改的,什么時(shí)間修改的,修改了哪些內(nèi)容。
甚至如果修改有誤,用于恢復(fù)到歷史版本。
可以在修改的文件上點(diǎn)擊右鍵選擇“顯示日志”來(lái)查看文件的修改歷史。
比較版本差異
還可以看到兩次信息提交的版本差異,選中兩個(gè)文件,右擊:比較版本差異
導(dǎo)出指定版本
可以【導(dǎo)出】指定版本,如果編寫(xiě)錯(cuò)誤,用于還原到歷史版本。
導(dǎo)出指定版本之后,是一個(gè)文件,也就是對(duì)應(yīng)著指定版本的文件。
還原修改[風(fēng)險(xiǎn)版本和安全版本]
這里分為兩種情況:
①?zèng)]有提交到本地倉(cāng)庫(kù)就想還原;【無(wú)法還原已經(jīng)修改的內(nèi)容,沒(méi)有日志顯示】
②提交到本地倉(cāng)庫(kù)之后還原;【安全,日志歷史中有顯示】
當(dāng)文件修改后不想把修改的內(nèi)容提交,還想還原到未修改之前的狀態(tài)。此時(shí)可以使用“還原”功能
注意:此操作會(huì)撤銷所有未提交的修改,所以當(dāng)使用還原操作是需要慎重慎重?。。?/p>
但是我想針對(duì)的僅僅只是當(dāng)前的這個(gè)文件的提交,不想波及到其他文件。那么還有很好的方式。
利用導(dǎo)出指定版本獲取得到指定版本的文件,進(jìn)行覆蓋,就可以獲取得到指定版本的信息文件。
這樣子操作還沒(méi)有風(fēng)險(xiǎn)!非常方便使用。
通過(guò)日志歷史可以查看到對(duì)應(yīng)的變化信息。
5、刪除文件
刪除文件第一種方式
需要?jiǎng)h除無(wú)用的文件時(shí)可以使用git提供的刪除功能直接將文件從版本庫(kù)中刪除。
如果真的想刪除文件,可以選擇【提交】
如果文件版本庫(kù)也被刪除,此時(shí)本地文件徹底丟失了。
刪除文件第二種方式
刪除文件并保留副本
此時(shí)文件刪除,但是本地參考仍然存在,執(zhí)行【提交】可以刪除版本庫(kù)的文件,但是mytest3.txt在本地會(huì)保留。
【提交】后,查看倉(cāng)庫(kù),可以查看本地是存在副本文件。
但是本地還是有這個(gè)文件的。
4、將java工程提交到版本庫(kù)
這里是為了做一個(gè)測(cè)試,隨便將一個(gè)HelloWorld的項(xiàng)目放到一個(gè)目錄下
1、創(chuàng)建版本庫(kù)
利用小烏龜右鍵創(chuàng)建版本庫(kù)
2、將文件添加到版本庫(kù)
點(diǎn)擊【確定】完成暫存區(qū)添加。
忽略文件
在此工程中,并不是所有文件都需要保存到版本庫(kù)中的例如“out”目錄及目錄下的文件就可以忽略。好在Git考慮到了大家的感受,這個(gè)問(wèn)題解決起來(lái)也很簡(jiǎn)單,在Git工作區(qū)的根目錄下創(chuàng)建一個(gè)特殊的.gitignore文件,然后把要忽略的文件名填進(jìn)去,Git就會(huì)自動(dòng)忽略這些文件。
如果使用TortoiseGit的話可以使用菜單項(xiàng)直接進(jìn)行忽略。
選擇保留本地文件。完成后在此文件夾內(nèi)會(huì)多出一個(gè).gitignore文件,這個(gè)文件就是文件忽略文件,當(dāng)然也可以手工編輯。其中的內(nèi)容就是把.idea和out目錄忽略掉。
打開(kāi).gitinore文件
3、提交代碼到本地倉(cāng)庫(kù)
將代碼添加到master分支上,其中.gitignore文件也需要添加到暫存區(qū),然后提交到版本庫(kù)。
然后通過(guò)版本庫(kù)瀏覽器來(lái)進(jìn)行觀察,可以看到對(duì)應(yīng)的java工程下的文件夾。
5、以上步驟總結(jié)
這里只是大致羅列了上面的信息。具體的可以參考上面的過(guò)程。
6、遠(yuǎn)程倉(cāng)庫(kù)
遠(yuǎn)程倉(cāng)庫(kù)可以是Github,可以是Gitee,也可以是自己公司自己搭建的。
那么必須要來(lái)介紹一下現(xiàn)在的遠(yuǎn)程倉(cāng)庫(kù)都支持的協(xié)議。HTTPS和SSH方式
6.1、HTTP協(xié)議
HTTP操作的時(shí)候每次提交的時(shí)候都需要傳輸賬號(hào)密碼校驗(yàn)。這種比較簡(jiǎn)單,就不來(lái)進(jìn)行過(guò)多說(shuō)明。
基于賬號(hào)+密碼
6.1.1、使用tortoiseGit同步代碼到遠(yuǎn)程倉(cāng)庫(kù)
在遠(yuǎn)程倉(cāng)庫(kù)中新建一個(gè)倉(cāng)庫(kù),然后使用https方式同步到遠(yuǎn)程倉(cāng)庫(kù)。
因?yàn)檫@里使用的是賬號(hào)密碼,所以這里不需要來(lái)進(jìn)行配置。
這時(shí)候推送需要輸入“用戶名”和“密碼”,對(duì)應(yīng)注冊(cè)遠(yuǎn)程倉(cāng)庫(kù)的賬號(hào)和密碼。但是一般來(lái)說(shuō),在控制面板中會(huì)來(lái)記錄一下對(duì)應(yīng)的賬號(hào)密碼:
然后查看對(duì)應(yīng)的倉(cāng)庫(kù)中,是否有對(duì)應(yīng)的代碼操作。
6.2、SSH協(xié)議
SSH 為 Secure Shell(安全外殼協(xié)議)的縮寫(xiě),由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題。
使用ssh協(xié)議通信時(shí),推薦使用基于密鑰的驗(yàn)證方式。你必須為自己創(chuàng)建一對(duì)密匙(第1步),并把公用密匙放在需要訪問(wèn)的服務(wù)器上(第2步)。如果你要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過(guò)來(lái)的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏健百|(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。
來(lái)畫(huà)個(gè)圖具體說(shuō)明一下這里的流程:
從上面可以看到,是基于公鑰私鑰的,而沒(méi)有基于賬號(hào)密碼。
6.2.1、SSH秘鑰生成
在windows下我們可以使用 Git Bash.exe來(lái)生成密鑰,可以通過(guò)開(kāi)始菜單或者右鍵菜單打開(kāi)Git Bash
git bash 執(zhí)行命令,生命公鑰和私鑰
命令: ssh-keygen -t rsa -C ‘郵箱’
其中’郵箱’為注冊(cè)github的登錄賬號(hào)的郵箱(也可使用github注冊(cè)的賬號(hào))
當(dāng)你創(chuàng)建ssh的時(shí)候:-t 表示密鑰的類型 ,-b表示密鑰的長(zhǎng)度,-C 用于識(shí)別這個(gè)密鑰的注釋 ,這個(gè)注釋你可以輸入任何內(nèi)容,很多網(wǎng)站和軟件用這個(gè)注釋作為密鑰的名字
一路回車
執(zhí)行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名.ssh下面生成如下名稱的公鑰和私鑰:
6.2.2、秘鑰設(shè)置
密鑰生成后需要在遠(yuǎn)程倉(cāng)庫(kù)上配置公鑰才可以順利訪問(wèn)。公鑰也就是id_rsa.pub文件中的內(nèi)容設(shè)置進(jìn)去。
6.2.3、使用ssh協(xié)議同步到遠(yuǎn)程倉(cāng)庫(kù)
同步到遠(yuǎn)程倉(cāng)庫(kù)可以使用git bash也可以使用tortoiseGit
6.2.3.1、使用tortoiseGit同步本地代碼到遠(yuǎn)程倉(cāng)庫(kù)
由于TortoiseGit使用的ssh工具是“PuTTY”,git Bash使用的ssh工具是“openSSH”,如果想讓TortoiseGit也使用剛才生成的密鑰可以做如下配置:
右鍵,選擇“git 同步”
點(diǎn)擊管理:
【注意】:首先保證:ssh客戶端需配置成git使用的客戶端
也就是git的安裝目錄中的usr/bin下面的ssh.exe文件配置。
這里只是配置了工具連接遠(yuǎn)程倉(cāng)庫(kù)的方式,而并沒(méi)有指定遠(yuǎn)程倉(cāng)庫(kù)的地址。所以還需要來(lái)進(jìn)行修改。
說(shuō)明:
origin:可以隨便寫(xiě)的
Url:遠(yuǎn)程倉(cāng)庫(kù)的地址
推送URL:也是相同的(可以不填寫(xiě))
Putty密鑰:選擇剛才生成的密鑰中的私鑰
私鑰可以直接選擇對(duì)應(yīng)的文件進(jìn)來(lái)即可。
【推送】:即push指令
查看遠(yuǎn)程倉(cāng)庫(kù),即可看到最新的代碼。
很舒服!?。。?/p>
7、從遠(yuǎn)程倉(cāng)庫(kù)獲取克隆代碼
克隆遠(yuǎn)程倉(cāng)庫(kù)也就是從遠(yuǎn)程把倉(cāng)庫(kù)復(fù)制一份到本地,克隆后會(huì)創(chuàng)建一個(gè)新的本地倉(cāng)庫(kù)。選擇一個(gè)任意部署倉(cāng)庫(kù)的目錄,然后克隆遠(yuǎn)程倉(cāng)庫(kù)。使用遠(yuǎn)程倉(cāng)庫(kù)的mytest3為例,使用https協(xié)議克隆。
在任意目錄點(diǎn)擊右鍵:
查看:F/repository/clone_repo目錄
8、從遠(yuǎn)程倉(cāng)庫(kù)獲取拉取代碼
Git中從遠(yuǎn)程的分支獲取最新的版本到本地有這樣2個(gè)命令:
1. git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)merge(合并代碼)
2. git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地,上述命令其實(shí)相當(dāng)于git fetch 和 git merge
在實(shí)際使用中,git fetch更安全一些,但是不常用!因?yàn)樵趍erge前,我們可以查看更新情況,然后再?zèng)Q定是否合并。
git pull更常用,因?yàn)榧吹么a又可以自動(dòng)合并
如果使用TortoiseGit的話可以從右鍵菜單中點(diǎn)擊“拉取”(pull)或者“獲取”(fetch)
8.1、版本沖突
這個(gè)是在提交代碼中經(jīng)常遇到的事情。因?yàn)椴煌拈_(kāi)發(fā)人員再對(duì)同一個(gè)文件來(lái)進(jìn)行操作之后,最終git也無(wú)法判斷到底使用哪個(gè)開(kāi)發(fā)者提交的代碼來(lái)解決問(wèn)題。所以交給開(kāi)發(fā)者們自己來(lái)進(jìn)行決定選擇哪個(gè)作為最終版本。
版本沖突是怎么產(chǎn)生的?分析一波:
開(kāi)發(fā)者A需要在F文件做一些修改,開(kāi)發(fā)者B也需要在F文件中做一些修改。
開(kāi)發(fā)者A先提交,那么沒(méi)有任何問(wèn)題;開(kāi)發(fā)者B后提交,那么就有了問(wèn)題。因?yàn)樯弦粋€(gè)版本中,開(kāi)發(fā)者A\B的代碼是一樣的,但是對(duì)于開(kāi)發(fā)者A來(lái)說(shuō),他只不過(guò)是在上一個(gè)版本中做了一個(gè)修改成為了一個(gè)新版本;而對(duì)于開(kāi)發(fā)者B來(lái)說(shuō),也成了一個(gè)新版本,而不是在開(kāi)發(fā)者A的基礎(chǔ)之上衍生的新版本。所以導(dǎo)致了沖突。
沖突也很好解決,到底是采用你的?采用我的?還是二者都采用?取決于開(kāi)發(fā)者。
演示一下具體的案例:
這個(gè)時(shí)候,出現(xiàn)版本沖突,先拉取(pull)遠(yuǎn)程倉(cāng)庫(kù)的代碼到本地。
編輯沖突:
合并成一個(gè)新的文件。如上所示,將會(huì)合并成一個(gè)新文件。
這里的新文件,我們可以自行來(lái)進(jìn)行修改即可?。。?!
修改完成然后提交本地倉(cāng)庫(kù),再次提交到遠(yuǎn)程倉(cāng)庫(kù)中去。
9、分支介紹
在我們每次的提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。截止到目前,只有一條時(shí)間線,在Git里,這個(gè)分支叫主分支,即master分支。HEAD指針嚴(yán)格來(lái)說(shuō)不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。
如圖:只要有本地倉(cāng)庫(kù)就有master分支:
一開(kāi)始的時(shí)候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當(dāng)前分支,以及當(dāng)前分支的提交點(diǎn):
那么也就是說(shuō),只要來(lái)操作分支,就可以知道當(dāng)前分支的提交點(diǎn)在哪里。
切換分支,實(shí)際上就是切換HEAD的指向,指向當(dāng)前分支最新的提交。
每次提交,master分支都會(huì)向前移動(dòng)一步,這樣,隨著你不斷提交,master分支的線也越來(lái)越長(zhǎng)。
當(dāng)我們創(chuàng)建新的分支,例如dev時(shí),Git新建了一個(gè)指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當(dāng)前分支在dev上:
你看,Git創(chuàng)建一個(gè)分支很快,因?yàn)槌嗽黾右粋€(gè)dev指針,改改HEAD的指向,工作區(qū)的文件都沒(méi)有任何變化!
不過(guò),從現(xiàn)在開(kāi)始,對(duì)工作區(qū)的修改和提交就是針對(duì)dev分支了,比如新提交一次后,dev指針往前移動(dòng)一步,而master指針不變:
假如我們?cè)赿ev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡(jiǎn)單的方法,就是直接把master指向dev的當(dāng)前提交,就完成了合并:
所以Git合并分支也很快!就改改指針,工作區(qū)內(nèi)容也不變!
合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:
9.1、使用TortoiseGit實(shí)現(xiàn)分支管理
使用TortoiseGit管理分支就很簡(jiǎn)單。
1、創(chuàng)建分支
在本地倉(cāng)庫(kù)文件夾中點(diǎn)擊右鍵,然后從菜單中選擇“創(chuàng)建分支”:
如果想創(chuàng)建完畢后直接切換到新分支可以勾選“切換到新分支”選項(xiàng)或者從菜單中選擇“切換/檢出”來(lái)切換分支:
右鍵查看,再提交,指向新的分支。
2、合并分支
分支切換到dev后就可以對(duì)工作區(qū)的文件進(jìn)行修改,然后提交到dev分支,原來(lái)的master分支不受影響。例如我們修改mytest.txt中的內(nèi)容,然后提交到dev分支。
注意:兩個(gè)分支在進(jìn)行生成之后就是彼此獨(dú)立的。
切換到dev分支上,修改文件,同時(shí)提交到dev的分支上
切換到master分支,我們?cè)谛薷膍ytest.txt,同時(shí)新建master.txt文件,并同時(shí)提交,發(fā)現(xiàn)沒(méi)有報(bào)錯(cuò)信息。
不難發(fā)現(xiàn),我們切換到master分支/dev分支后還是原來(lái)的內(nèi)容:2個(gè)分支的開(kāi)發(fā)互不影響,相互獨(dú)立的。
最后,我們將dev分支的內(nèi)容合并到master分支,當(dāng)前分支為master。從右鍵菜單中選擇“合并”:
再查看mytest.txt、dev.txt、master.txt的內(nèi)容就已經(jīng)更新了:
解決沖突后提交即可:此時(shí)可以提交到主線上。
3、刪除分支
注意:如果當(dāng)前分支為dev,則不能刪除dev。
右鍵選擇“切換/檢出”,選擇分支。
總結(jié)
柚子快報(bào)邀請(qǐng)碼778899分享:小烏龜操作Git【全】
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。