Git版本管理及代碼上線

 

1.1 有了git版本管理後怎麼樣

一、自動生成備份java

二、隨時回滾linux

三、知道改動的地方git

 

說明:簡單來說,有新和舊的來對比,回滾高亮檢查多個版本,而且能檢查出來有多少個東西是修改過的.github

 

1.2 介紹常見版本管理軟件

1.2.1 SVN

 

1.2.2 Git

 

 

1.2.3 使用Git的好處

一、沒有網絡依然可使用Git同步數據web

二、SVN很是強烈要依賴網絡,Git沒網也能夠用。數據庫

 

1.3 github與gitlab的區分

github是網上公用的倉庫,可是公開的如需保密要交費,因此缺點就是這些,但gitlab是本地倉庫,有保護不收費,搭建方便。vim

 

1.4 安裝Git環境準備

cat /etc/redhat-release    #查看系統版本,只要是7就沒有問題windows

uname –r                  #查看系統內核瀏覽器

getenforce                 #查看防火牆關閉沒有緩存

systemctl disable firewalld     #若是沒有關閉就當即關閉。

vim /etc/selinux/config    #修改end爲disabled

 

1.5 安裝Git

rpm –qa git   #查看有沒有git,通常系統會自帶

 

yum install –y git  #若是沒有就yum安裝

 

1.6 Git全局配置

git config --global user.name 「你的名字」     #例如fxs,不能爲中文

git config --global user.email 「你的郵箱」        #郵箱地址

git config --global color.ui true              #語法高亮

git config --list                              #查看全局配置

 

說明:記得config後面是兩個--,不是一個,不然會報錯。

 

1.7 初始化GIT工做目錄

mkdir git_data

cd git_data/

git init        #初始化,後面會顯示初始化一個git隱藏目錄,在剛建立的那個目錄下的.git目錄

git status      #查看工做區狀態,會顯示主要的分支,如今尚未東西等信息。

 

1.8 常規使用(建立數據-提交數據)

touch README               #建立一個文件

git status                 #查看git狀態,此時紅色的,因沒添加到緩存區。

git add README             #提交數據到暫存區域,暫存區域是給你檢查錯誤的緩存區,若是有錯可撤銷。

git status                 #上面git add提交到緩存區後,文件會被綠色。

git commit –m ‘firstcommit’ #提交暫存文件至版本庫,爲你每次提交寫一個說明,如不寫說明,不知每次提交是什麼東西就亂了,方便查歷史記錄

 

 

 

1.8.1 提交過程小總結

先提交到緩存區域,而後在git commit一次性將緩存區域的東西提交到數據庫。

 

1.9 刪除暫存區數據

一、沒有添加到暫存區的數據直接rm刪除便可

 

二、已經添加到暫存區數據:

git rm –cached 要刪的文件名       #這個是將文件從Git暫存區域列表刪除,(並不會刪除當前工做目錄內的數據文件)

git rm –f 要刪的文件名            #將文件數據從Git暫存區和工做目錄一塊兒刪除

 

1.10 重命名暫存區數據

一、沒有添加到暫存區的數據直接move更名便可

 

二、已經添加到暫存區數據:

git mv 要改的文件名 改爲什麼文件名

 

1.11 查看歷史記錄

git log         #查看歷史記錄,每次提交的用戶名稱、帳號、數據提交時間、以及提交說明都會有。

git commit –a –m 「xx test」     #-a是add的意思,-m是寫說明信息,不寫的話,使用log命令查看不到,這個命令可一次性提交數據到緩存區和寫說明

 

測試的話:

一、 建立一個文件或目錄,空目錄不行,需目錄裏創文件

二、 而且可以使用一次性完成添加到暫存區和寫說明。

 

1.12 git commit參數說明

添加新文件

git add            #添加到暫存區域

git commit      #提交git倉庫  -m 後面接上註釋信息,內容關於本次提交的說明,方便本身或他人查看

 

修改或刪除原有文件

 

常規方法

git add *

git commit

 

簡便方法

git commit –a –m 「註釋信息」

-a 表示直接提交

 

1.13 查看歷史記錄

git log         #查看提交歷史記錄

git log -2      #查看前二條

git log –p -1     #顯示每次提交的內容差別,至關於最近的文件改變信息

git log –stat -2  #stat簡要顯示數據增該行數,這樣可以看到提交中修改過的內容,對文件添加或移動的行數,並在最後列出全部增減行的概要信息

git log –pretty=oneline   #pretty根據不一樣的格式展現提交的歷史信息(根據版本號與後面註釋查找咱們須要的文件)

git log –pretty=fuller -2   #以更詳細的模式輸出提交的歷史記錄(更詳細的顯示前兩行,誰提交、提交時間、註釋內容)

git log –pretty=fomat:「%h %cn」  #查看當前全部提交記錄的簡短SHA-1哈希字串與提交着的姓名    ,其餘格式見備註(相似AWK切割內容,指定想要看的內容,顯得方便,參數有固定語法)

 

1.14 還原歷史數據

說明:當你以爲版本後問題,你能夠反悔,能夠返回指定歷史記錄的版本,head至關於一個軟鏈接,你指向哪一個版本,用戶看到head就是你指向的哪一個版本。

 

git reset --hard HEAD^      #還原歷史提交版本上一次

git reset --hard HEAD~5      #這裏可指定前幾個的數量,否則用~的方式去數的話比較麻煩,因此這個方式會好一些。

git reset --hard 3de15d4     #找到歷史記錄還原點的版本,號碼可不寫全,可寫版本的前幾個數,例如版本爲asdasd21321,可指定爲asdasd2也可指定。

 

 

 

1.15 還原將來數據(當還原歷史記錄反悔後的操做)

說明:當我還原歷史記錄後,前面的歷史記錄會所有沒有,而且文件也沒有了,因此通常人以爲不能夠後悔和恢復數據,因此這裏還涉及一個命令,能夠返回以前全部的數據再從新head軟鏈接指向

 

git reflog  #查看將來歷史更新點

git reset –hard 版本號前幾個號碼    #使用hard指向那時候的版本,再使用ls或git log –pretty=oneline查看如今全部緩存區的東西與工做目錄下的當時的內容了。

 

1.16 標籤使用

說明:前面回滾使用的是一串字符串,有長又難記,每個版本使用一個標籤來方便回滾和查找,下次可快速查找到對應標籤的版本,可是使用標籤的時候,他默認只對如今當前使用的版原本指定標籤。

 

git tag V1.0       #當前提交內容打一個標籤(方便快速回滾)每次提交均可以打個tag

git tag             #查看當前全部的標籤

git show v1.0       #查看當前1.0版本的詳細信息

git tag v1.2 –m 「version 1.2 release is test」      #建立帶有說明的標籤,-a指定標籤名字,-m指定說明文字

 

指定當前版本後,新建標籤名字和標籤註釋

git reset –hard 版本號

git reset –hard V1.0

 

1.17 對比數據

說明:git diif能夠對比當前文件與倉庫已保存文件的區別,知道了對README做了什麼修改後,再把它提交到倉庫就放心多了。

git diff 文件名    #指定查看對比的文件

舉例:

echo oldboy >>README

git diff README

 

說明:追加點信息到README文件裏,在使用diff查看這個文件,會看到綠色,綠色是新增的內容。

 

1.18 分子管理

1.18.1 分支原理與原理圖

 

 

說明:當剛建立Git的時候,會有個master的主分支字樣,但其實git還有主分支與分支的做用,主分支是是必需要很是穩定的,子分支就是在實際的項目開發中是給開發用的,開發爲一個部門,部門爲一個dev子分支,在這個dev子分支下,分爲劃分了好幾個分支,每一個開發主要負責一個功能開發來提交到屬於本身的分支,這樣就不會形成多我的去寫一份配置文件形成衝突,有過多的麻煩,因此每一個人都有分工和分支來解決代碼衝突,寫完後再統一發到部門dev的分支,再確認代碼沒問題就提交到主分支發放給任何一個用戶,因此分支是團隊合做的分支管理。

 

1.18.2 建立分支

git branch linux       #建立分支

git checkout linux     #切換分支

git branch         #查看當前分支狀況,當前分支前有*號

 

說明:建立分支後,會將master分支裏的文件克隆一份到linux分支裏,當你在linux分支裏修改文件時,其實跟master是兩條管道了,他的東西你修改不了,你修改的東西只能在linux下修改了,開發人員在linux分支裏修改東西和建立東西,是沒法在master裏建立的,至關於git也有權限管理。

 

1.18.3 模擬開發在自家分支修改文件時,master無修改(舉例)

開發操做:

[root@oldboyedu-47 git_data]# git branch       #當前在linux分支

* linux

  master

 

[root@oldboyedu-47 git_data]# echo "this is test" >>11    #我追加點信息到一個文件裏

 

[root@oldboyedu-47 git_data]# git commit -a -m "this is test"     #提交到緩存區,而且寫上文件提交的註釋

 

linux運維管理人員操做:

[root@oldboyedu-47 git_data]# git checkout master     #管理人員切換到master主分支

Switched to branch 'master'

[root@oldboyedu-47 git_data]# cat 11                  #打開開發人員在自家分支裏修改的11文件,並無修改,是空的,說明沒有真正修改文件。

 

[root@oldboyedu-47 git_data]# git log -1              #查看最新的第一條日誌歷史記錄,發現不是咱們剛纔提交的註釋那條信息,說明確實沒有。

commit eb77741ee3142b37f37002524f0812851a9627fb

Author: 「fxs」 <「806304019@qq.com」>

Date:   Fri Aug 17 21:27:46 2018 +0800

 

    ceshi.test

 

1.18.4 合併分支(將linux分支的工做成果合併到master分支)

[root@oldboyedu-47 git_data]# git branch       #查看如今在哪一個分支,必須得切換到master分支下在合併

  linux

* master

 

[root@oldboyedu-47 git_data]# git merge linux  #使用merge命令合併linux分支,將指定分支合併到當前master分支

Updating eb77741..c3eb6fe

Fast-forward

 11 | 1 +       #有新增內容

 1 file changed, 1 insertion(+)

 

[root@oldboyedu-47 git_data]# cat 11       #在查看在開發修改的文件裏的信息,肯定有新內容了。

this is test

 

[root@oldboyedu-47 git_data]# git log -1   #查看最新的歷史記錄,也能看到剛纔開發提交的那個註釋信息,已經同步過來了。

commit c3eb6fe004849d0e5c4e4d06d5c3ffcf20576ac9

Author: 「fxs」 <「806304019@qq.com」>

Date:   Sat Aug 18 12:45:18 2018 +0800

 

    this is test

 

1.18.5 子分支在工做當中的規範(習慣)

說明:當將開發人員寫好東西的分支合併到master後,就要馬上刪除分支,固然也能夠繼續用,可是根據生產環境而言可能開發是一週或者一個月更新一次代碼,開發忘記本身的分支在哪裏了,否則容易混淆亂,常年下去分支會特別多,新來接手的開發就不知道哪一個能用哪一個是能刪哪一個是能動的,由於每一個分支修改後的代碼只會保存在本身的分支裏,當master更新後的代碼在那個舊的分支是不會有變化的,因此新來的開發來接手更改就不知道哪一個是最近版本更新的,因此每一次更新代碼就從新開一個分支,開一個分支至關於克隆master最新代碼到新的分支裏,很是快,能接着編輯,這是一個習慣、工做規範。

 

git branch –d linux   #刪除linux分支

 

1.18.6 手動合併分支

master分支內容與linux子分支內容衝突案例:

master 分支也是單獨一個倉庫,linux 分支也是單獨的一個倉庫,當master與linux分支提交到本身單獨的倉庫緩存區時不會報錯,但使用git merge linux合併linux到master倉庫時,就會出現某某文件內容衝突,由於內容同樣致使合併失敗、須要人工修改文件來進行劃分須要哪些內容,當咱們打開衝突的文件時,git系統會幫忙劃分master分支與linux分支修改的內容劃界限來幫忙區分哪部分是誰寫的,哪部分是master自帶的,讓咱們人工手動修改

 

  出現這個後,若是不要master分支的內容,就把HEAD那一行,與linux與等號、mastert內容去掉,留下linux的,這樣就是人工合併。

 

1.19 windows客戶端使用

說明:前面講的都是linux客戶端,在講講windows客戶端使用,安裝Git-2.10.0-64-bit

windows的git,本質是windows上的linux系統

下載地址:https://git-scm.com/download/win    根據本身系統多少位來下載,安裝過程全靠默認Next

 

步驟1

右鍵可以使用命令行模式,也可以使用win下的GUI圖形化模式,命令模式也是使用git等命令建立,使用GUI模式先建立倉庫,提交等等這些操做。

 

步驟2

建立工做目錄

 

 

 

說明:隨後在工做目錄寫上東西,在點擊Rescan從新掃描, ,就能夠了,隨後等操做可百度,這些不經常使用,只是方便,瞭解下。

 

1.20 安裝GitLab服務器

說明:GitHub是一個網絡平臺,可上傳代碼,員工從這裏下載,可是內容公開的,若是要保密要交費,因此也能夠在服務器上搭建Git代碼倉庫,可是比較麻煩一些,GitHub每一年好像交7美圓。

 

說明:內存須要2個G,他運行一些東西須要大點的空間。

 

curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.9.8-ce.0.el7.x86_64.rpm  #官網下載或從百度下載再拉到服務器,由於慢。

yum localinstall -y gitlab-ce-8.9.8-ce.0.el7.x86_64.rpm       #解決本地rpm包的依賴問題

gitlab-ctl reconfigure     #初始化,就執行一次。

gitlab-ctl status          #查看gitlab狀態

 

經過瀏覽器訪問並設置初始密碼:

10.0.0.7

經過瀏覽器訪問頁面,設置初始化密碼

 

密碼:12345678   #要求8位,少就不行。

 

git登錄界面:

 

 

帳號:root  密碼:12345678

 

瀏覽器操做

建立新的項目

 

填寫項目名稱、項目描述、權限設置,Private是登錄的用戶才能查看,internal是必須登錄的用戶才能克隆,public是能被全部人克隆,克隆是能訪問的意思,能訪問說明能直接複製。

 

建立項目

提示使用ssh密鑰登錄(不然開發push代碼時每一次都須要提供帳號密碼,在開發機器上使用ssh-keygen -t rsa生成密鑰後,將根目錄下的pub公鑰全部複製到上面受權開發用戶就好。)

 

可用這個地址登錄,這個oldboyedu-47是系統主機名,若是win沒有host解析是登錄不上去的,因此如今直接用IP訪問。

 

開發可直接輸入網址可登錄,由於剛保存了咱們登錄的cookies會話,用無痕窗口登錄就須要輸入帳號密碼,由於剛設置的是私有倉庫,共有的就不用登錄。

 

服務器內操做:

[root@oldboyedu-47 tools]# ssh-keygen      #生成一個密鑰對,簡稱公鑰,安裝所有回車。

[root@oldboyedu-47 tools]# cat /root/.ssh/id_rsa.pub      #打開密鑰文件,複製裏面的內容。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMQKObsjIuKLu5tx104wYs/0t1qQXHGscgwXrCRi14Dn4PT564hhe6pp21CkelzCaB1mPoRCKheyL70d5cPW1hg+qpsJr9REh2lLDeG/tpfV4b/y3ekqMZxLwQl7bcG9z1V1C95PMs4GYd/Es6BdlG1/F7XDy/ZAjV+R/VVcNygNFZKf0H6Dg9w+GMzVEcSw5TpRImfW90R9+cShgeU6nfKXGbjDaA4FdoI/L0iV5m6dl4jcs1sGwn6FuKDouKVTLM9t1Y4O5Cc2eulhai+C5i+2hHoH4A+AdGMAjXeRKBUsoz0Gmvz/+WtGR7I5mFosfs7emWL8FElBwpOHnkS8Lr root@oldboyedu-47

 

點擊警告標誌進入頁面

 

將公鑰內容放置裏面,填寫名稱,名稱可隨意填,有描述性就好。

 

點擊頭頂標誌,再點擊剛建立項目的名字。

 

網頁上有專門的操做教程,可查看使用,第一個是建立新的存儲庫,第二個是在現有文件夾操做的命令,(第一種狀況是從開發電腦沒有文件夾的狀況下去操做的命令,第二種狀況是開發有這個文件夾的目錄再執行的命令。)

 

服務器操做:

[root@oldboyedu-47 /]# git clone git@oldboyedu-47:root/oldboyedu47.git        #執行這條命令,輸入yes,會在/目錄克隆建立一個項目名稱的目錄,想在哪一個目錄生成這個工做目錄,就切換到哪一個目錄再克隆生成,這個其實像共享目錄似得,想要在本地同步一下這個工做目錄,必需要輸入帳號密碼,但使用了ssh密鑰分發,就登陸不用帳號和密碼了。(開發用戶操做)

 

[root@oldboyedu-47 /]# cd oldboyedu47/                        #進入克隆好的工做目錄

[root@oldboyedu-47 oldboyedu47]# touch 123test                #建立一個文件

[root@oldboyedu-47 oldboyedu47]# git add 123test              #將文件添加到暫存區

[root@oldboyedu-47 oldboyedu47]# git commit -m "123 git-test" #提交文件至本地倉庫,而且寫上註釋

[root@oldboyedu-47 oldboyedu47]# git push -u origin master    #最後提交到剛搭建的gublab服務器。

 

瀏覽器操做:

點擊頭部、點擊項目名稱

點擊Repository下面的Files,下面就有剛提交的文件,因沒寫內容,因此是空的,也有對應的描述。

 

服務器插入內容操做:

[root@oldboyedu-47 oldboyedu47]# echo 1234 >>123test              #插入內容到文件內

[root@oldboyedu-47 oldboyedu47]# git commit -a -m "mod 123test"       #提交到緩存區,而且寫描述

[root@oldboyedu-47 oldboyedu47]# git push -u origin master        #提交到Github服務器平臺裏。

刷新頁面後,點擊文件內會有剛更新的內容。

 

也可在瀏覽器上編輯內容,而且同步到GitLab服務器內:

點擊Edit編輯

填寫內容

下面滾動,點擊這個按鈕更新。

 

GitLab服務器更新內容,並查看文件內容是否更新:

[root@oldboyedu-47 oldboyedu47]# git pull          #下載代碼

[root@oldboyedu-47 oldboyedu47]# cat 123test       #查看更新文件的內容,看到已經更新了。

1234

hello

test

ceshi!! QQ806304019

 

 

GitLab代碼小總結:

git push -u origin master          #推送代碼

git pull                           #下載代碼

 

說明:這些命令都比較經常使用。

 

1.21 開發使用pycharms將開發代碼上傳到GitLab平臺(默認是在master主分支裏操做)(開發的軟件與git倉庫創建鏈接,進行push等操做)

打開pycharms,點擊VCS-第六個-Git

填寫這個地址到pycharms界面。

 

由於win沒有解析oldboyedu的域名IP,因此改爲GitLab服務器的IP地址。

 

輸入登陸GitLab網頁的帳號與密碼

鏈接這個git項目成功。

點擊Clone

 

詢問:克隆完了是要打開這個工做目錄嗎?點擊yes

 

詢問是打開一個新窗口,仍是默認在新窗口,點擊OK。

 

會出現一個新的目錄,而且有工做目錄中新的文件,裏面能夠填寫文件內容。

 

點擊這個配置選項,提交到緩存區,和填寫註釋信息。

填寫註釋信息,而且提交緩存區

填寫郵件地址,點擊下一步。

點擊push

 

點擊網頁刷新

 

點擊Branch或點擊下面那個就是咱們剛py提交的註釋。

 

1.22 在Pycharms裏新建子分支進行工做

在Pycharms的項目右鍵點擊新建分支的設置

新建一個分支

分支名字叫作linux

切換分支的設置

新建linux分支的時候,已經默認進入linux分支裏面了,因此若是要切換到其餘分支的時候能夠在裏面設置切換。

切換到linux分支的時候,點擊文件進行修改。

而後按照上面的操做,進行提交註釋信息。

點擊push

在網頁上,點擊刷新

點擊Branches分支

看到新的分支出現後,會有linux分支出現,有master而且出現剛纔建立的linux。

順着linux分支-123test文件-點擊進去會看到linux分支修改的內容。

這裏有合併請求

提交合並請求

接受合併請求

點擊左上方名字,找到master分支的文件,看下是否合成在一個文件裏了。

點擊進入master分支

點擊123test文件,看到linux分支的文件內容,已經合併到master一塊兒了。

 

說明:之前就是分支修改文件在合併到主分支裏了。

 

運維要操做的內容:以上都是開發要作的,咱們運維只需git push –u origin master下載代碼,而後git put更新代碼。

 

1.23 Gitlab備份管理

vim /etc/gitlab/gitlab.rb  #編輯配置文件

#配置文件中最後插入參數。

 

 

 

參數說明:第一個是備份的路徑,第二個是文件保留時間,默認爲秒單位,如今設置是7天。

 

1.24 Gitlab備份的數據恢復

中止數據寫入服務

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

gitlab-ctl status  #檢查兩個寫入數據的服務是否down掉。

gitlab-reke gitlab:backup:restore BACKUP=源碼備份文件名       #注意不加.tar後綴,在備份目錄找源碼文件,文件在備份目錄找,提示默認yes。

gitlab-ctl restart

gitlab-ctl status  #檢查是否啓動成功

 

說明:過一會在訪問gitlab頁面,纔可看到恢復的倉庫。

 

 

 

1.25 亞哥講座

hequn

 

 

 

 

 

 

告訴上面誰使用git上傳,用戶是誰

 

 

 

 

只要被跟蹤過來的文件,進行更改,就要從新commit 提交,至關於作任何一個操做(移動或更改內容),就要從新提交一次。

 

不能直接使用MV 不然要從新提交,特別麻煩 因此使用git mv 就不用提交,用GIT系統內置就好一些。

 

 

 

 

 

新建用戶組oldboy,設置這個用戶組的權限(公開,仍是需登陸),新建用戶dev,而且設置8位密碼,新建項目,控制這個項目的用戶組是oldboy,項目名稱爲test_web,最後點擊oldboy用戶組將dev添加進去而且設置dev開發角色。  隨後點擊扳手點擊test_web項目在git服務端初始化克隆好好倉庫(git clone)。

 

開發: 使用剛建立的dev帳號登陸web界面,點擊test_web項目,克隆好倉庫到本地,隨後無權限提交到master,因此在客戶端建立dev分支,在切換到dev分支,建立文件,而且提交到本地倉庫(暫存區域 git add . git commit -m 「123」),隨後在瀏覽器切換到dev分支可看到文剛建立的文件就在裏面,在dev分支右上角建立合併請求,填寫合併理由留下歷史記錄,最後點擊建立請求。

 

開發老大:在瀏覽器登陸administrator帳號,找到dev發送的合併請求,點擊dev發過來的請求,而後點擊Merge確認合併,此時網頁上同步了,可是git服務端工做目錄沒有同步過來,須要手工git pull下載同步下來,就能夠了。

 

 

 

502錯誤多是與jenkins端口8080衝突

 

 

 

java環境衝突。

相關文章
相關標籤/搜索