Git倉庫搭建及分支管理的方法

這篇文章主要講解了“Git倉庫搭建及分支管理的方法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Git倉庫搭建及分支管理的方法”吧!

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鄠邑免費建站歡迎大家使用!

1. Git是什么?

Git是一款開源的分布式版本控制系統(tǒng),可以有效,高速處理從很小到非常大的項目版本管理。 Git是通過C語言開發(fā)實現(xiàn)的。

2. Git與SVN的比較

Git和SVN是兩種截然不同的版本控制系統(tǒng),Git是分布式版本控制系統(tǒng),而SVN則是集中式版本控制系統(tǒng)。要想比較Git和SVN的區(qū)別,首先需要了解分布式版本控制系統(tǒng)和集中式版本控制系統(tǒng)的基本概念。
集中式版本控制系統(tǒng):一個顯著的特征是版本庫是存放在中央服務(wù)器上的,由中央服務(wù)器統(tǒng)一管理項目的版本信息和分支信息。團隊中的每個成員在工作時都需要先從中央服務(wù)器上拉取最新的代碼,然后開始干活。干完活之后再將代碼提交到中央服務(wù)器上。集中式版本服務(wù)器有兩個弊端:

  1. 必須聯(lián)網(wǎng)才能工作,當沒有網(wǎng)絡(luò)或者網(wǎng)絡(luò)很差時,則團隊中的成員無法協(xié)同工作。

  2. 安全性不好,因為版本庫存放在了中央服務(wù)器,當中央服務(wù)器損壞時則會丟失版本庫,使所有成員都沒法工作。


可以看出團隊中所有成員的工作電腦都只與中央服務(wù)器打交道。如果把版本庫比做書庫的話,那么每個人(每個電腦)都需要先從書庫借到書(拉取最新的代碼),閱讀完之后然后還給書庫(修改之后提交到中央服務(wù)器)

分布式版本控制系統(tǒng): 與集中式版本控制系統(tǒng)最大的不同是團隊中所有成員的工作電腦上都有一個完整的版本庫,并且沒有中央服務(wù)器。,這就相當于團隊中每個成員都有一個自己的小書庫(版本庫),成員之間可以互相交換自己書庫中的圖書(將自己的修改提交給對方)。這里完全不需要中央服務(wù)器來管理協(xié)調(diào)管理。
在實際使用分布式版本控制系統(tǒng)時,其實很少在兩人之間的電腦上進行版本庫推送,這是因為有時候你們不在同一個局域網(wǎng)內(nèi),或者你同事的電腦關(guān)機了。因此,分布式版本控制系統(tǒng)通常也有一臺充當“中央服務(wù)器”的電腦,但這個服務(wù)器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。這臺充當“中央服務(wù)器”的電腦上的版本庫稱之為遠程版本庫,其他成員電腦上的版本庫稱之為本地版本庫。

分布式版本控制系統(tǒng)剔除了中央服務(wù)器,這充分體現(xiàn)了分布式的核心概念,就是去中心化。這樣帶來的好處有兩點:

  1. 沒有網(wǎng)絡(luò)也能上班:團隊中的每個成員在沒有網(wǎng)絡(luò)的情況下也能工作,因為本地有完整的版本庫,不需要擔(dān)心數(shù)據(jù)的丟失。

  2. 數(shù)據(jù)更安全:當某個成員的電腦壞掉了不要緊,只需要從其他成員的電腦上復(fù)制一份即可。但是集中式版本控制系統(tǒng)的中央服務(wù)器出問題,則可能會丟失版本庫,使得所有人都沒法工作。

3. 系統(tǒng)環(huán)境

系統(tǒng)版本
WindowsWindows10
LinuxUbuntu16.04

4. 安裝Git客戶端

說完了Git的基本概念,接下來還是安裝個Git客戶端下來耍一耍。這里分不同的操作系統(tǒng)簡單的介紹一下Git客戶端的安裝。

Linux系統(tǒng)下

首先通過git --version 命令查看電腦上是否已經(jīng)安裝了Git客戶端。
如果已經(jīng)安裝了就可以跳過此章節(jié)。如果沒有安裝的話就接著往下面看:
Linux系統(tǒng)有不同的發(fā)行版本,可以通過cat /proc/version 命令查看Linux的版本。

  1. Debian或Ubuntu下安裝Git
    在 Debian或Ubuntu可以通過apt包管理工具安裝Git,命令如下:

sudo apt-get install git
  1. Red Hat 或者CentOS下安裝Git
    Red Hat 或者CentOS下可以通過yum包管理工具安裝Git,命令如下:

yum install git -y

如果找不到y(tǒng)um命令的話,則需要先安裝yum工具??梢詤⒖枷旅婷?/p>

#刪除yum.repos.d目錄下所有文件rm -f /etc/yum.repos.d/*#然后重新下載阿里的yum源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo#清理緩存yun clean all

Windows系統(tǒng)下



下載好安裝包之后,一直點擊下一步即可安裝。再次就不在贅述。

5.本地版本庫操作

Windows下安裝好Git之后會出現(xiàn)Git Bash 和Git GUI兩個應(yīng)用程序,其中Git Bash是Git的命令行工具,而Git GUI則是Git的可視化工具(一般很少用)。

創(chuàng)建本地版本庫

創(chuàng)建本地版本庫分為兩步:
第一步是創(chuàng)建一個空文件夾,命名為: git_learn。
第二步就是在該文件夾下執(zhí)行git init 命令將該文件夾變成git可以管理的版本庫。
執(zhí)行第二步之后,在 git_learn目錄下會出現(xiàn)一個名為.git的隱藏文件夾,該文件夾就是git的版本庫。切記不要手動修改.git文件夾下的任何內(nèi)容,以免本地版本庫不可用。

本地版本庫建好之后就可以在git_learn文件夾下創(chuàng)建一個文件進行測試了。這里創(chuàng)建了一個名為readme.txt的文件。
添加到暫存區(qū)
通過git add readme.txt命令可以將readme.txt文件提交到暫存區(qū)(關(guān)于暫存區(qū)的概念后面會詳細介紹)。如果有多個文件需要添加的話,可以執(zhí)行git add . 命令。
提交到版本庫
因為git的本地都是有完整版本庫的,所以還需要將前面創(chuàng)建的readme.txt文件提交到本地版本庫的當前分支,默認是master。命令格式是git commit -m '<message>' ,其中寫入你的提交備注。

工作區(qū)和暫存區(qū)

這里有兩個很重要的概念,一個是工作區(qū),另一個是暫存區(qū)(Git特有的概念)。
工作區(qū)
工作區(qū)就是你電腦上能看到的目錄(不包括隱藏文件),例如:git_learn目錄就是一個工作區(qū)。

暫存區(qū)
工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū),而是Git的版本庫,其中最重要的是暫存區(qū)(stage)。

還有Git為我們自動創(chuàng)建的第一個分支叫master,以及指向master的一個指針叫HEAD。


通過add命令將工作區(qū)中ABC文件夾提交到暫存區(qū)stage,在通過commit命令將stage中的ABC文件夾提交到當前分支master。

管理修改

Git管理的是修改而非文件。這里的修改指的是對工作區(qū)的任何操作,包括新增文件;刪除文件;修改文件等等。哪怕是在文件中增加一句話或者刪除一個字符都可以算是修改。下面就舉例說明下,還是以readme.txt文件為例:

  1. 第一次在readme.txt文件中增加一個詞語 gittest。然后執(zhí)行git add readme.txt,并通過命令git status查看狀態(tài)。
    hello world
    gittest

  2. 第二次再在readme.txt文件上添加一行內(nèi)容git tracks changes。
    hello world
    gittest
    git tracks changes

直接執(zhí)行git commit -m 'git tracks changes'命令。然后通過 git status,可以發(fā)現(xiàn)第二次的修改沒有提交。這是因為第二次的修改沒有先提交到暫存區(qū)中。

我們的操作過程是第一次修改 -> git add -> 第二次修改 -> git commit。當使用git add 命令后,在工作區(qū)中的第一次修改被放入暫存區(qū)中,準備提交,在工作區(qū)中的第二次修改沒有被放入暫存區(qū)中,所以,git commit只負責(zé)把暫存區(qū)中的修改提交到當前分支。所以第二次的修改沒有提交。
也就是說,所有的修改必須先通過git add 提交到暫存區(qū),然后通過git commit 提交到當前分支。。在實際開發(fā)中一般是將所有修改合并起來add,然后在一起commit。

刪除文件

當前分支上有一個已經(jīng)廢棄不用的文件,該如何刪除呢?比如要刪除一個名為test1.txt文件。只需要兩行命令。

git rm test1.txtgit commit -m "remove test.txt"

5.Ubuntu搭建私有的git倉庫

前面介紹了在實際開發(fā)中,一般會拿一臺電腦作為“中央倉庫”,充當中央倉庫的電腦需要安裝一個代碼倉庫軟件,這里選用開源軟件GitLab,它是基于git實現(xiàn)的在線代碼倉庫軟件,提供web可視化管理界面,可以在本地部署。通常用于企業(yè)團隊內(nèi)部協(xié)作開發(fā)。當然,如果你不想搭建私人的git倉庫,那么也可以直接使用最大的同性交友網(wǎng)站Github(使用與GitLab類似)。
那么該如何在Ubuntu上安裝GitLab軟件,搭建私有的Git倉庫呢?

  1. 安裝必須的一些服務(wù)

#更新apt源sudo apt-get update#安裝依賴包,運行命令sudo apt-get install curl openssh-server ca-certificates postfixsudo apt-get install -y postfix
  1. 接著信任 GitLab 的 GPG 公鑰:

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
  1. 配置鏡像路徑
    由于國外的下載速度過慢,所以配置清華大學(xué)鏡像的路徑。

sudo vi /etc/apt/sources.list.d/gitlab-ce.list

在該文件中寫入如下代碼

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
  1. 安裝gitlab-ce

sudo apt-get updatesudo apt-get install gitlab-ce

安裝gitlab-ce成功之后。
5. 修改外部url
在gitlab配置文件/etc/gitlab/gitlab.rb中修改外部url,改為自己的ip地址或者域名。

sudo vi /etc/gitlab/gitlab.rb

找到external_url,修改其默認的地址,這里改成了我本機局域網(wǎng)IP:192.168.40.138

external_url 'http://192.168.40.138/'  ## 本機的局域網(wǎng)ip地址為192.168.41.128
  1. 執(zhí)行配置
    前面步驟順利的話就可以執(zhí)行配置了,該過程可能需要較長的時間。

sudo gitlab-ctl reconfigure
  1. 啟動GitLab

sudo gitlab-ctl start

可以通過ps -ef|grep gitlab 命令查看GitLab是否啟動成功。
8. 進行瀏覽器訪問
GitLab成功啟動之后就可以通過瀏覽器訪問GitLab的主頁了。在瀏覽器上輸入http://192.168.40.138/;

默認輸入的用戶名是root用戶,輸入的密碼是root的賬戶密碼。
至此GitLab的安裝就全部結(jié)束,我們也成功的搭建了屬于自己的Git倉庫。

GitLab的使用

添加用戶

點擊設(shè)置按鈕,進入設(shè)置欄,選中Users->New User 進入添加用戶頁面。

輸入姓名,用戶名,和郵箱即可注冊添加新用戶。

添加團隊

用戶添加好之后,就是將用戶添加到團隊中,GitLab中默認會有一個名為GitLab Instance的團隊,你也可以添加自己的團隊,這里我添加了一個名為ai_edu的團隊。并在團隊中添加了兩個成員。

選中要添加成員的團隊,在右側(cè)會出現(xiàn)一個添加Add user(s) to the group的欄目。再此欄目中所有用戶并添加到團隊中。用戶的角色有游客,測試人員,開發(fā)人員,管理者,擁有者等幾個不同的角色。

新建遠程倉庫

說完了用戶和團隊的設(shè)置后,現(xiàn)在就進入了重點了,如何新建一個遠程倉庫。同樣也是比較方便。操作步驟是:Project->Your projects->New project

這里新建了一個名為git_test的遠程倉庫,倉庫的所有這是屬于ai_edu團隊。

這里倉庫的權(quán)限等級有三個等級,分別是:Private(只有你團隊的人才能拉取和推送代碼),Internal(除了黑名單之外的用戶可以拉取和推送代碼)。Public (所有的用戶都可以拉取)。

SSH key的配置(生成公鑰和私鑰)

為啥要配置SSH key呢?這是因為GitLab與你的電腦是通過SSH協(xié)議來通信的。說白了,如果你沒有配置SSH key的話,則你不能推送代碼到遠程庫。這里首先在你本地生成公鑰和私鑰文件,然后把公鑰文件的內(nèi)容復(fù)制到GitLab上。

  1. 配置用戶名

git config --global user.name “username”
  1. 配置郵箱

 git config --global user.email  jayxiang31@gmail.com

jayxiang31@gmail.com替換成你實際的郵箱地址。不需要加單引號。
4. 生成公鑰和私鑰

ssh-keygen -C 'you email jayxiang31@gmail.com' -t rsa

如果簡單些的話可以直接填寫ssh-keygen 命令。郵箱地址填寫前面設(shè)置的郵箱地址。有提示的話一直按Enter鍵。

2 找到公鑰文件id_rsa.pub,復(fù)制公鑰內(nèi)容到GitLab

6. 分支管理

創(chuàng)建與合并分支

分支的概念:分支就是每次提交創(chuàng)建的點所連接成的時間線。這條時間線就是一個分支,默認的話只有一個主分支master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交,HEAD指向的就是當前分支。
一開始的時候,master分支就是一條線,Git用master指向最新的提交,再用HEAD指向master,就能夠確定當前的分支以及當前分支的提交點。
每次提交,master分支都會向前進移動一步,這樣隨著你不斷提交,master分支的線也會越來越長。

1. 創(chuàng)建dev分支

當我們新創(chuàng)建一個分支dev時,Git會創(chuàng)建一個指針dev指向master分支當前的提交點。當切換到dev分支后,HEAD指針會指向dev。也就是說HEAD始終是指向當前分支的。

git checkout -b dev

git checkout 加上-b參數(shù)表示創(chuàng)建并切換到dev分支上,相當于下面兩條命令。

$ git branch dev
$ git checkout dev


當在dev分支上提交代碼(未改變master分支)之后,dev分支會不斷的向后推進。而master指針的指向則不會變。

git checkout命令是一個比較特殊的命令,傳入不同的參數(shù)會有截然不同的效果。例如:git checkout -- file 命令,表示的意思是撤銷file文件中所有的修改。所以Git還提供了git switch命令用于創(chuàng)建和切換分支。

## 創(chuàng)建并切換到新的dev分支git switch -c dev## 切換到已有的master分支git switch master
2. 查看所有分支

分支創(chuàng)建好之后,可以通過git branch命令進行查看。

3. 分支合并

當團隊成員在dev分支上開發(fā)完畢之后,就可以將dev分支上的內(nèi)容合并到master分支上,合并分支的原理就是將master指針指向dev的當前提交。Git合并分支只是改了下指針,工作區(qū)的內(nèi)容沒有改變。

其合并的命令分兩步,第一步是切換到master分支,第二步是合并dev分支

#切換到master分支git checkout master#合并dev分支git merge dev
  1. 刪除dev分支
    現(xiàn)在dev分支的內(nèi)容也合并到了master分支上了,可以將dev分支刪除了。Git刪除dev分支其實就是刪除dev指針。刪除之后又只剩下master分支了。需要注意的是必須要先切換到master分支上再進行刪除dev分支的操作。刪除dev分支的命令如下:

git branch -d dev

解決沖突

在團隊協(xié)作過程中,難免會碰到各種修改沖突。那么該如何解決這些沖突呢? 例如:你和你同事分別修改了readme.txt文件,那么當你們同時提交時就會出現(xiàn)沖突。又或者在你在master分支和feature1分支上分別修改了readme.txt文件。那么當你合并feature1分支到master分支時就會出現(xiàn)沖突。舉個栗子吧:

  1. 在feature1分支上給readme.txt文件中加上了文本處理沖突。然后提交到feature1分支。

  2. 切換到master分支,給readme.txt文件中加上文本

沖突處理
master有沖突

然后提交到master分支上。
3. 將feature1分支合并到master分支,此時就會出現(xiàn)合并沖突。如下圖所示:

沖突之后,Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內(nèi)容。如下圖所示:
處理沖突的方式就是編輯沖突內(nèi)容。然后重新提交。

$ git add README.md
$ git commit -m "解決沖突"

比較差異

  1. 比較兩個提交之間的差異 git diff 36e4fd7 b55da38

  2. 比較工作區(qū)與倉庫區(qū)的不同,HEAD表示最新的那次提交 git diff HEAD

分支管理策略

通常情況下,Git在合并分支時,會使用Fast forward模式。但是,這種模式下,刪除分支后,會丟掉分支信息。如下圖所示,刪除dev分支之后,分支的信息也就就丟失了


如果要強制禁用Fast forward模式,Git會在merge時生成一個新的commit。當刪除分支時就不會丟失分支信息。其命令是
git merge --no-ff -m "merge with no-ff" dev
準備合并dev分支,其中--no-ff參數(shù),表示禁用Fast forward,因為本次合并要創(chuàng)建一個新的commit,所以加上-m參數(shù)。把commit描述寫進去。

Bug分支

當你接到一個修復(fù)代號為01的bug的任務(wù)時,很自然地,你會創(chuàng)建一個分支issue-01來修復(fù)它,但是,如果這是你正在dev分支上進行的工作還沒有提交,提交吧,可是你在dev上的工作只進行了一般,還沒法提交,預(yù)計完成還需1天的時間。但是,現(xiàn)在必須要在兩個小時內(nèi)修復(fù)代號01的bug。這時候該怎么辦呢?你不是期望有一個功能可以隱藏你當前在dev上未提交的工作,然后,切換到issue-01分支修改bug呢。
通過stash功能可以滿足你的愿望,將當前工作現(xiàn)場隱藏起來。如下圖所示:執(zhí)行git stash命令之后,新建的hello.html文件就從工作區(qū)中消失了。

保存工作現(xiàn)場

git stash

git stash命令可以將當前未提交的工作隱藏起來。讓你的工作區(qū)變的干凈清爽。

查看工作現(xiàn)場

git stash list 可以查看當前倉庫所有已經(jīng)保存的工作現(xiàn)場。

git stash list

恢復(fù)工作現(xiàn)場

現(xiàn)在代號為01的bug已經(jīng)修復(fù)好了,你可以繼續(xù)切換到dev分支上進行開發(fā)了。那么這時候你需要做的第一件事就是恢復(fù)之前保存的工作現(xiàn)場?;謴?fù)工作現(xiàn)場的命令是:

git stash apply

刪除工作現(xiàn)場

通過git stash apply 命令可以恢復(fù)工作現(xiàn)場。但是,恢復(fù)之后工作現(xiàn)場還在。那么這時候我們還需要一個命令來刪除工作現(xiàn)場。其命令是:

git stash drop

恢復(fù)并刪除工作現(xiàn)場

恢復(fù)工作現(xiàn)場一條命令,刪除工作現(xiàn)場又是一條命令。未免有點繁瑣了吧。有沒有將兩者合二為一的命令呢?答案是有的:通過下面的命令就可以實現(xiàn):

git stash pop

在master分支上修復(fù)了bug后,我們想一想,dev分支是早期從master分支分出來的,所以,這個bug其實在當前dev分支上也存在。那怎么在dev分支上修復(fù)同樣的bug?重復(fù)操作一次,提交不就行了?這種方法也不是不行,如果該BUG涉及的修改過多,這樣的方式就顯得有點捉襟見肘了。那么我們能不能把修改BUG做的提交復(fù)制到當前的dev分支呢?答案是有的:

合并某一次的提交

git cherry-pick  821ea4d

通過git cherry-pick 命令可以將單個的提交復(fù)制到當前分支。可以通過 git log 查看提交的提交的版本號。

feature分支

添加一個新功能時,你肯定不希望因為一些實驗性質(zhì)的代碼,把主分支搞亂了,所以,每添加一個新功能,最好新建一個feature分支,在上面開發(fā),完成后,合并,最后,刪除該feature分支。
前面介紹可以通過git branch -d branchname 命令刪除分支。但是,如果被刪除的分支還沒有合并到主分支的話,用該命令刪除的話分支的話,Git會拋出一個錯誤提示并不能刪除該分支。如下:要刪除一個名為feature-01的分支。但是該分支還沒有被merge。這時候就需要強制刪除分支的命令了。

git branch -D feature-01

其中feature-01為待刪除的分支名。其實就是將-d參數(shù)換成-D參數(shù)。

遠程倉庫(多人協(xié)作)

前面說了那么多,好像都是一個人在本地操作,沒有涉及到多人協(xié)作的情況。這在團隊開發(fā)中肯定是不可能的啦,因為我們是一個team。那么多人協(xié)作的情況涉及哪些操作呢?

本地倉庫關(guān)聯(lián)遠程倉庫

git remote add origin http://192.168.40.138/ai-edu/git-demo.git

或者,推薦使用下面這種,因為前面配置了SSH公鑰和私鑰

git remote add origin git@gitee.com:jayxiang31/python_learn.git

第一次先拉取遠程庫中的README.md和.gitignore等文件

git pull --rebase origin master

克隆遠程倉庫

前面第三章已經(jīng)搭好了私有的Git倉庫管理器GitLab。同時也創(chuàng)建了一個名為git_test的倉庫。現(xiàn)在要做的就是將遠程倉庫克隆下來。克隆的命令是git clone

git clone http://192.168.40.138/ai-edu/git_test.git

其中http://192.168.40.138/ai-edu/git_test.git 是遠程倉庫的地址。
當然也可以在IDEA上直接通過圖形界面操作,還省去了導(dǎo)入項目的過程。其操作步驟是:

  1. 選中File->New->Project from Version Control->Git。

  2. 在URL中填入遠程倉庫的地址,點擊Clone按鈕。
    需要注意的是默認情況下只會克隆master分支,其他的分支不會被克隆下來。其他的分支需要通過git pull命令拉取,后面會詳細介紹。

刪除遠程Git倉庫

 git remote rm origin

查看遠程分支

通過git remote命令可以查看遠程倉庫,origin表示遠程主機。
通過git remote -v 命令可以查看遠程倉庫詳細的信息,包括遠程倉庫的地址。

$ git remote -v
origin  http://192.168.40.138/ai-edu/git_test.git (fetch)origin  http://192.168.40.138/ai-edu/git_test.git (push)

上面顯示了可以抓取和推送的origin的地址。如果沒有推送權(quán)限,就看不到push的地址。

推送分支

現(xiàn)在將遠程倉庫克隆下來了,那么該如何將當前分支上所有的本地提交推送到遠程庫呢?答案是通過git push命令,其語法結(jié)構(gòu)是git push <remote branch> <local branch> 其中<remote branch>表示遠程分支名,<local branch>表示本地分支名。

git push origin master

該語句表示將本地的master分支推送到遠程的origin分支上。在實際應(yīng)用中會在git push命令后面加上-u參數(shù),就像git push -u origin master這樣。這是因為如果當前分支與多個主機存在追蹤關(guān)系,則可以使用 -u 參數(shù)指定一個默認主機,這樣后面就可以不加任何參數(shù)使用git push。那么哪些分支該與遠程分支保持一致呢?一般認為:

  1. master 分支是主分支,需要時時與遠程同步

  2. dev分支是開發(fā)分支,團隊所有成員都需要在上面工作,所以也需要與遠程同步

  3. bug分支只用于在本地修復(fù)bug,就沒必要推到遠程了,除非老板要看看你每周到底修復(fù)了幾個bug;

  4. feature分支是否推到遠程,取決于你是否和你的小伙伴合作在上面開發(fā)。
    說白了就是需要團隊協(xié)作的分支一定要推送到遠程庫,否則則不需要

創(chuàng)建遠程分支

通過git push命令還能創(chuàng)建遠程分支。

git push origin dev

假設(shè)你本地已經(jīng)有了dev分支。通過上面的命令可以將dev分支推送到遠程庫,并創(chuàng)建遠程的dev分支。

拉取分支

通過git pull命令可以拉取遠程倉庫的數(shù)據(jù)和分支信息。假設(shè)如下這個場景:你同事在他本地創(chuàng)建了一個dev分支,并提交到了遠程庫。同時你也在本地創(chuàng)建了一個dev庫,當你push時會推送失敗。結(jié)果如下圖所示:

因為你同事的最新提交和你試圖推送的的提交有沖突。解決的辦法就是根據(jù)Git的提示,先用git pull把最新的提交從origin/dev抓下來,然后,在本地合并,解決沖突后,在推送。

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.    git pull <remote> <branch>If you wish to set tracking information for this branch you can do so with:    git branch --set-upstream-to=origin/<branch> dev

git pull也失敗了。原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,根據(jù)提示,設(shè)置dev和origin/dev的鏈接:

關(guān)聯(lián)本地分支和遠程分支

$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

關(guān)聯(lián)好本地分支和遠程分支之后,在pull就能成功了。這回git pull成功,但是合并有沖突,需要手動解決,解決的方式也是在本地手動處理沖突文件,解決后,提交,在push。

刪除遠程分支

通過

git push origin :dev

命令可以刪除遠程dev分支。但是這時候本地的dev分支還是存在的。所以還需要通過git branch -d dev刪除本地的dev分支。

查看分支

通過git branch可以查看本地分支
通過git branch -a 可以查看本地分支和遠程分支。

版本回退

在實際開發(fā)中我們經(jīng)常會碰到這樣一個場景,比如:你誤提交了一段有問題的代碼,導(dǎo)致其他同事更新代碼之后項目啟動不了,這時候該怎么辦呢?我們首先想到的就是將版本回退?;赝说街澳莻€沒有問題的版本。

  1. 通過git log 命令找到當前的倉庫所有的提交日志。然后,找到你需要回退到的版本。如下圖所示:

  2. 回退到上一個版本:git reset HEAD

  3. 回退到指定版本:git reset commitId 其中commitId是指定版本的版本號,比如這里將版本信息回退到b50c9bdcbf9641d33e4b531bd96dc1f27d4bf602 這個版本。那么命令就是:

git reset b50c9bdcbf9641d33e4b531bd96dc1f27d4bf602

回退之后,再次通過git log查看,則最新的提交日志已經(jīng)變成了hello 提交這個版本了。
當然,通過IDEA來回退則更加的簡單。直接在Version Control->Log 在待回退到的版本上右鍵,選中Reset Current Branch to Here 即可。

其實回退操作的本質(zhì),就是將HEAD指針的指向要回退的那個版本上。

分支重命名

git branch -m oldname newname

7. 標簽管理

標簽管理比較簡單,再此只是簡單描述一下。

#創(chuàng)建標簽 v1.0git tag v1.0#查看標簽git tag#刪除標簽v1.0git tag -d v0.1#推送標簽git push origin --tags#刪除遠程標簽git push origin :refs/tags/v1.0

感謝各位的閱讀,以上就是“Git倉庫搭建及分支管理的方法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Git倉庫搭建及分支管理的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

當前題目:Git倉庫搭建及分支管理的方法
標題鏈接:http://bm7419.com/article46/goedhg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)虛擬主機、面包屑導(dǎo)航全網(wǎng)營銷推廣、外貿(mào)建站、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)