一、自動生成備份java
二、隨時回滾linux
三、知道改動的地方git
說明:簡單來說,有新和舊的來對比,回滾高亮檢查多個版本,而且能檢查出來有多少個東西是修改過的.github
一、沒有網絡依然可使用Git同步數據web
二、SVN很是強烈要依賴網絡,Git沒網也能夠用。數據庫
github是網上公用的倉庫,可是公開的如需保密要交費,因此缺點就是這些,但gitlab是本地倉庫,有保護不收費,搭建方便。vim
cat /etc/redhat-release #查看系統版本,只要是7就沒有問題windows
uname –r #查看系統內核瀏覽器
getenforce #查看防火牆關閉沒有緩存
systemctl disable firewalld #若是沒有關閉就當即關閉。
vim /etc/selinux/config #修改end爲disabled
rpm –qa git #查看有沒有git,通常系統會自帶
yum install –y git #若是沒有就yum安裝
git config --global user.name 「你的名字」 #例如fxs,不能爲中文
git config --global user.email 「你的郵箱」 #郵箱地址
git config --global color.ui true #語法高亮
git config --list #查看全局配置
說明:記得config後面是兩個--,不是一個,不然會報錯。
mkdir git_data
cd git_data/
git init #初始化,後面會顯示初始化一個git隱藏目錄,在剛建立的那個目錄下的.git目錄
git status #查看工做區狀態,會顯示主要的分支,如今尚未東西等信息。
touch README #建立一個文件
git status #查看git狀態,此時紅色的,因沒添加到緩存區。
git add README #提交數據到暫存區域,暫存區域是給你檢查錯誤的緩存區,若是有錯可撤銷。
git status #上面git add提交到緩存區後,文件會被綠色。
git commit –m ‘firstcommit’ #提交暫存文件至版本庫,爲你每次提交寫一個說明,如不寫說明,不知每次提交是什麼東西就亂了,方便查歷史記錄
先提交到緩存區域,而後在git commit一次性將緩存區域的東西提交到數據庫。
一、沒有添加到暫存區的數據直接rm刪除便可
二、已經添加到暫存區數據:
git rm –cached 要刪的文件名 #這個是將文件從Git暫存區域列表刪除,(並不會刪除當前工做目錄內的數據文件)
git rm –f 要刪的文件名 #將文件數據從Git暫存區和工做目錄一塊兒刪除
一、沒有添加到暫存區的數據直接move更名便可
二、已經添加到暫存區數據:
git mv 要改的文件名 改爲什麼文件名
git log #查看歷史記錄,每次提交的用戶名稱、帳號、數據提交時間、以及提交說明都會有。
git commit –a –m 「xx test」 #-a是add的意思,-m是寫說明信息,不寫的話,使用log命令查看不到,這個命令可一次性提交數據到緩存區和寫說明
測試的話:
一、 建立一個文件或目錄,空目錄不行,需目錄裏創文件
二、 而且可以使用一次性完成添加到暫存區和寫說明。
添加新文件
git add #添加到暫存區域
git commit #提交git倉庫 -m 後面接上註釋信息,內容關於本次提交的說明,方便本身或他人查看
修改或刪除原有文件
常規方法
git add *
git commit
簡便方法
git commit –a –m 「註釋信息」
-a 表示直接提交
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切割內容,指定想要看的內容,顯得方便,參數有固定語法)
說明:當你以爲版本後問題,你能夠反悔,能夠返回指定歷史記錄的版本,head至關於一個軟鏈接,你指向哪一個版本,用戶看到head就是你指向的哪一個版本。
git reset --hard HEAD^ #還原歷史提交版本上一次
git reset --hard HEAD~5 #這裏可指定前幾個的數量,否則用~的方式去數的話比較麻煩,因此這個方式會好一些。
git reset --hard 3de15d4 #找到歷史記錄還原點的版本,號碼可不寫全,可寫版本的前幾個數,例如版本爲asdasd21321,可指定爲asdasd2也可指定。
說明:當我還原歷史記錄後,前面的歷史記錄會所有沒有,而且文件也沒有了,因此通常人以爲不能夠後悔和恢復數據,因此這裏還涉及一個命令,能夠返回以前全部的數據再從新head軟鏈接指向
git reflog #查看將來歷史更新點
git reset –hard 版本號前幾個號碼 #使用hard指向那時候的版本,再使用ls或git log –pretty=oneline查看如今全部緩存區的東西與工做目錄下的當時的內容了。
說明:前面回滾使用的是一串字符串,有長又難記,每個版本使用一個標籤來方便回滾和查找,下次可快速查找到對應標籤的版本,可是使用標籤的時候,他默認只對如今當前使用的版原本指定標籤。
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
說明:git diif能夠對比當前文件與倉庫已保存文件的區別,知道了對README做了什麼修改後,再把它提交到倉庫就放心多了。
git diff 文件名 #指定查看對比的文件
舉例:
echo oldboy >>README
git diff README
說明:追加點信息到README文件裏,在使用diff查看這個文件,會看到綠色,綠色是新增的內容。
說明:當剛建立Git的時候,會有個master的主分支字樣,但其實git還有主分支與分支的做用,主分支是是必需要很是穩定的,子分支就是在實際的項目開發中是給開發用的,開發爲一個部門,部門爲一個dev子分支,在這個dev子分支下,分爲劃分了好幾個分支,每一個開發主要負責一個功能開發來提交到屬於本身的分支,這樣就不會形成多我的去寫一份配置文件形成衝突,有過多的麻煩,因此每一個人都有分工和分支來解決代碼衝突,寫完後再統一發到部門dev的分支,再確認代碼沒問題就提交到主分支發放給任何一個用戶,因此分支是團隊合做的分支管理。
git branch linux #建立分支
git checkout linux #切換分支
git branch #查看當前分支狀況,當前分支前有*號
說明:建立分支後,會將master分支裏的文件克隆一份到linux分支裏,當你在linux分支裏修改文件時,其實跟master是兩條管道了,他的東西你修改不了,你修改的東西只能在linux下修改了,開發人員在linux分支裏修改東西和建立東西,是沒法在master裏建立的,至關於git也有權限管理。
開發操做:
[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
[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
說明:當將開發人員寫好東西的分支合併到master後,就要馬上刪除分支,固然也能夠繼續用,可是根據生產環境而言可能開發是一週或者一個月更新一次代碼,開發忘記本身的分支在哪裏了,否則容易混淆亂,常年下去分支會特別多,新來接手的開發就不知道哪一個能用哪一個是能刪哪一個是能動的,由於每一個分支修改後的代碼只會保存在本身的分支裏,當master更新後的代碼在那個舊的分支是不會有變化的,因此新來的開發來接手更改就不知道哪一個是最近版本更新的,因此每一次更新代碼就從新開一個分支,開一個分支至關於克隆master最新代碼到新的分支裏,很是快,能接着編輯,這是一個習慣、工做規範。
git branch –d linux #刪除linux分支
master分支內容與linux子分支內容衝突案例:
master 分支也是單獨一個倉庫,linux 分支也是單獨的一個倉庫,當master與linux分支提交到本身單獨的倉庫緩存區時不會報錯,但使用git merge linux合併linux到master倉庫時,就會出現某某文件內容衝突,由於內容同樣致使合併失敗、須要人工修改文件來進行劃分須要哪些內容,當咱們打開衝突的文件時,git系統會幫忙劃分master分支與linux分支修改的內容劃界限來幫忙區分哪部分是誰寫的,哪部分是master自帶的,讓咱們人工手動修改
出現這個後,若是不要master分支的內容,就把HEAD那一行,與linux與等號、mastert內容去掉,留下linux的,這樣就是人工合併。
說明:前面講的都是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從新掃描, ,就能夠了,隨後等操做可百度,這些不經常使用,只是方便,瞭解下。
說明: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 #下載代碼
說明:這些命令都比較經常使用。
打開pycharms,點擊VCS-第六個-Git
填寫這個地址到pycharms界面。
由於win沒有解析oldboyedu的域名IP,因此改爲GitLab服務器的IP地址。
輸入登陸GitLab網頁的帳號與密碼
鏈接這個git項目成功。
點擊Clone
詢問:克隆完了是要打開這個工做目錄嗎?點擊yes
詢問是打開一個新窗口,仍是默認在新窗口,點擊OK。
會出現一個新的目錄,而且有工做目錄中新的文件,裏面能夠填寫文件內容。
點擊這個配置選項,提交到緩存區,和填寫註釋信息。
填寫註釋信息,而且提交緩存區
填寫郵件地址,點擊下一步。
點擊push
點擊網頁刷新
點擊Branch或點擊下面那個就是咱們剛py提交的註釋。
在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更新代碼。
vim /etc/gitlab/gitlab.rb #編輯配置文件
#配置文件中最後插入參數。
參數說明:第一個是備份的路徑,第二個是文件保留時間,默認爲秒單位,如今設置是7天。
中止數據寫入服務
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頁面,纔可看到恢復的倉庫。
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環境衝突。