Git版本管理及代碼上線


 

1.1 有了git版本管理后怎么樣

1、自動生成備份

2、隨時回滾

3、知道改動的地方

 

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

 

1.2 介紹常見版本管理軟件

1.2.1 SVN

 

1.2.2 Git

 

 

1.2.3 使用Git的好處

1、沒有網絡依然可以使用Git同步數據

2、SVN非常強烈要依賴網絡,Git沒網也可以用。

 

1.3 github與gitlab的區分

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

 

1.4 安裝Git環境准備

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

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 刪除暫存區數據

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

 

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

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

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

 

1.10 重命名暫存區數據

1、沒有添加到暫存區的數據直接move改名即可

 

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

git mv 要改的文件名 改成什么文件名

 

1.11 查看歷史記錄

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

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

 

測試的話:

1、 創建一個文件或目錄,空目錄不行,需目錄里創文件

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

 

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環境沖突。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM