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