git

git 本地倉庫操作
git --help
調出git的幫助文檔
git +命令 --help
查看某個具體命令的幫助文檔
git --version
查看git的版本
git init
生成空的本地倉庫
git add file1 file2 ....
將文件添加到暫存區

初次commit之前,需要配置用戶郵箱及用戶名,使用以下命令
git config --global usr.email "[email protected]"
git config --global user.name "your Name"
git commit
將暫存區裏的文件提交到本地倉庫

git remote
用於管理遠程倉庫
git push -u origin master
往名字爲origin倉庫的master分支上提交
git fetch
拉取遠程倉庫的變更到本地倉庫
git merge origin/master
將遠程的變更,合併到本地倉庫的master分支
git pull
-- 不建議使用 等同於fetch之後merge

git status
用於查看git的狀態
git rm
用於git文件的刪除操作
如果只是git rm --cache 僅刪除暫存區裏的文件
如果不加--cache會刪除工作區裏的文件,並提交暫存區
git checkout
直接加文件名,從暫存區將文件恢復到工作區,如果工作區已經有該文件,則會選擇覆蓋
加了分支名+文件名,則表示從分支名爲所寫的分支名中拉取文件,並覆蓋工作區裏的文件

新鍵文件-->untracked
使用add命令將新鍵的文件加入到暫存區-->Staged
使用commit命令將暫存區的文件提交到本地倉庫-->Unmodified
如果對Unmodified狀態的文件進行修改-->modified
如果對Unmodfied狀態的文件對行remove操作-->untracked

1.什麼是分支
軟件項目中啓動一套單獨的開發線的方法
2.爲什麼使用git
1.可以很好的避免版本兼容開發的問題,避免不同版本之間的相互影響
2.封裝一個開發階段
3.解決bug的時候新鍵分支,用於對該bug的研究
3.git中跟分支相關的命令
git brach 分支名
git branch 不參加任何參數,列出所有的分支,分支前面有*號,代表該分支爲當前所在分支
創建分支的時候,分支名不能使用特殊符號
git brancd -d 分支名
不能刪除當前所在分支
git branch -m 舊分支名 新分支名
git checkout 分支名 切換分支
如果在分支上面對文件進行修該之後,沒有commit就切換到另外一個分支b,這個時候會報錯,因爲沒有commit的文件在切換之後會不覆蓋。所以git報錯提示

git checkout -f 分支名 強制切換到分支,如果當前有未提交的變更,會直接丟棄
-f 參數一定一定要非常非常小心使用,一般情況下不建議使用,除非真的要強制去執行

log命令的作用:
用於查看git的提交歷史
git log命令顯示的信息的具體含義
commit 4a70ceb24b6849ad860d6af5126c9227b333d2d1 --SHA-1 校驗和 commit id
Author: ----作者跟郵箱概要信息
Date:---提交時間

v2 ---commit的時候,使用-m現象寫一段概要說明
日常在使用commit的時候,-m選項所寫得內容一定不能隨便寫
“修改了登陸的bug”-->"新增用戶管理中心"
git log -數字:表示查看最近幾次的提交
git log -p -2 顯示最近兩次提交的不同點
git log --author 查看具體某個作者的提交
git log --online 輸出簡要的信息
git log --graph 以一個簡單的線串連起整個提交歷史
git log 輸出信息的定製

diff-->difference的縮寫,用於比較差異
使用場景:
1.解決衝突
2.製作補丁
git diff 不加任何參數 用於比較當前工作區跟暫存區的差異
git diff --cached 或者--staged
git diff HEAD
git diff 分支名 查看當前分支跟指定的分支的差異
git diff 分支名1 分支2 查看兩個指定分支(已提交的)的差異,分支2跟分支1的差別
git diff 文件名 查看指定文件的差異
git diff commitid1 commitid2 用於列出兩個歷史提交的差異
git diff --stat 用於羅列有變更的文件

1.將不必要的文件add
2.上次提交覺得是錯的
3.不想改變暫存區內容,只是想調整提交的信息
4.版本回滾
git reset HEAD 文件名 移除不必要的添加到暫存區的文件
git reset HEAD^ 或者 commitd去掉上一次的提交
git reset --soft HEAD^ 修改上次提交的信息即commit -m "修改這裏的內容"
git reset --soft 只是將HEAD引用指向指定的提交,工作區跟暫存區的內容不會改變
git reset --mixed(默認選項)將HEAD指向指定的提交,暫存區的內容隨之改變,工作區內容不變
git reset --hard 將HEAD指向指定的提交,暫存區跟工作區都會改變

分支的合併
git merge 分支名
表示:拿指定分支名與當前的分支進行合併
git diff --name-only --diff-filter=U 用於查看產生衝突的文件

git tag 不加任何參數,表示顯示標籤(以字母序),非按時間
git tag 標籤名 默認是給最近的一次提交打上標籤
git tag 標籤名 commitid 給相應的提交打上標籤
git show 標籤名 顯示該標籤相關的那次提交的相關信息
git tag -d 標籤名 刪除該標籤
git push 遠程分支名 標籤名 把某個標籤(必須是本地已經存在的,否則推送失敗)推送到遠程服務器上

刪除遠程標籤的步驟
1.刪除本地的標籤 git tag -d 標籤名
2.再刪除遠程的 git pish orgin :refs/tags/標籤名

標籤跟commit掛鉤,只要commit存在於多個分支,那麼這幾個分支就都能看到這個標籤

爲什麼要使用.gitignore文件
大量與項目無關的文件全推到遠程倉庫上,同步的時候會非常慢,且跟編輯器相關的一些配置推上去之後,別人更新也會受其影響。所以,我們使用該文件,對不必要的文件進行忽略,使其不被git追蹤

一般情況下,.gitignore文件,在項目一開始創建的時候就創建,並推送到遠程服務器上,這樣大家初次同步項目的時候,就是用到該文件,避免以後,團隊成員把與項目無關的文件,傳到遠程服務器上

.log 表示忽略項目中所有以.log結尾的文件
123?.log 表示忽略項目中的所有以123加任意字符的文件
/error.log 表示忽略項目中根目錄中的error.log這個文件
src/main/test/
表示忽略/src/main/test/目錄下的所有文件
*.class
**/java/匹配所有java目錄下的所有文件
!/error.log 表示在之前的匹配規則下,被命中的文件,可以使用!對前面的規則進行否定

對於已經提交到遠程或本地倉庫的文件,.gitignore配置之後不會生效,我們必須先刪除本地暫存區裏的文件,之後在加上.gitignore文件,最後在把變更提交到遠程倉庫上。
git rm --cached 文件名 從暫存區刪除某個文件
git rm -rf --cache 文件夾 表示遞歸刪除該文件夾的所有東西

1.gitlab是什麼
是一個用於倉庫管理系統的開源項目,使用Git作爲代碼管理工具,並在此基礎上搭建起來的web服務。
基礎功能免費,高級功能收費
2.爲什麼要使用gitlab
1.基礎功能開原,可自行搭建
2.可以進行權限控制,使得代碼對部分人可見
3.gitlab使用方便

1.linux必要配置
在防火牆裏開放http跟ssh端口
yum installl lokkit
yum install curl openssh-server openssh-clients postfix cronie
service postfix start
lokkit -s http -s ssh
添加gitlab倉庫,並安裝
curl -sS http:packages,gitlab.cc/install/gitlab-ce/script.rpm.sh | bash
yum install gitlab-ce
啓動gitlab
gitlab-ctl reconfigure

vim /etc/gitlab/gitlab.rb
修改external_url='http://192.168.56.101:8888'
nginx['listen_port']=8888

gitlab-ctl reconfigure
gitllab-ctl restart

配置郵箱服務的用途
有合併請求時,郵件通知
帳號註冊時,郵件驗證
修改密碼時,通過郵件修改
配置步驟
1.開啓QQ郵箱的smtp服務
設置-->賬戶-->smtp-->密保驗證-->驗證成功返回一串字符串,形狀如(ausdixwerjdddf)這是郵件服務器的密碼
保存返回的字符串
2.修改gitlab配置
vim /etc/gitlab/gitlab.rb
gitlab_rails改所有的該行
user['git_user_email']='[email protected]'

gitlab-ctl reconfiure
3.測試郵件服務是否正常
gitlab-rails console
Notify.test_email('郵件接收方地址','郵件標題','郵件內容')deliver_now
按回車,測試發送

1.開啓註冊郵箱驗證
admin area-->setting-->sign-up restrictions-->勾選send confirmation email on sign-up
2.當前用戶
root,123,wiggin
3.創建組
首頁->create a group
訪問級別
Private:只有組成員草才能看到
Internal:只要登錄的用戶就能看到
Public:所有人都能看到

Guest:可以創建issue,發表評論,不能讀寫版本庫
Reporter:可以克隆代碼,不能提交
Developer:可以克隆代碼,開發,提交,push
Master:可以創建項目,添加tag,保護分支,添加項目成員,編輯項目
Owner:可以設置項目訪問權限 - Visibility Level,刪除項目,遷移項目,管理組成員

1.鍵入命令:ssh-keygen -t rsa
2.提醒你輸入key的名稱,輸入id_rsa
3.在C:\users\administrator.ssh下產生兩個文件:id_rsa和id_rsa.pub
4.用記事本打開id_rsa.pub文件,複製內容,在gitlab.com的網站上到ssh密鑰管理頁面,添加新公鑰,隨便取個名字,內容粘貼剛纔複製的內容。

爲什麼要保護分支
保護特定的分支不被隨便合併,以免影響相應的分支

什麼是持續集成?
持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,每次集成都通過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。
好處
節省人力成本
加快軟件開發進度
實時交付
整體流程
成員通過git提交代碼-->持續集成引擎拉取代碼使用構建工具自動構建-->發佈構建好的項目
重要組成部分
git
gitlab
Jenkins 持續集成引擎
maven 構建工具
sonarqube 代碼質量管理
junit 自動自行單元測試
JDK jdk
Tomcat 服務器

幾個war-->微服務架構

版本說明
jdk8.0(目前大部分公司內部使用的還是JDK8,大部分依賴java的工具或框架,對JDK8的支持度是最好的)
maven3.5.3

安裝sonarqube
前置依賴
mysql 5.6 or 5.7
jdk 1.8
1.下載
https://www.sonarqube.org/
2.安裝unzip並解壓sonarqube並移動到/usr/local/
unzip sonarqube-6.7.4.zip
mv sonarqube-6.7.4 /usr/local/
3.mysql裏新增數據庫
create database sonar default character set uft8;
4.修改sonarqube相應的配置
vim /usr/local/sonarqube-6.7.4/conf/sonar.proerties
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.jdbc.url=改成步驟3創建的庫名
sonar.web.context=/sonar
sonar.web.host=0.0.0.0

5.新增用戶,並將目錄所屬賦予該用戶
useradd sonar
chown -R -sonar.sonar sonarqube-6.7.4/
6.啓動
su - soanr
sonar.sh start
7.界面訪問
http://192.168.56.101:9000/sonar
在界面產生令牌,並將項目代碼使用以下命令進行提交由sonarqube進行分析,完成後,查看相應的分析結果

安裝jenkins
1.前置條件
JDK,tomcat
2.安裝tomcat
3.安裝jenkins
將jenkins上傳到tomcat的webapps目錄
啓動tomcat
打開http://192.168.56.101:8080/jenkins
此時發現提示jenkins離線
訪問http://192.168.56.101:8080/jenkins/pluginManager/advanced
拉到最底下,將https-->改成http,之後提交
重啓tomcat
選擇默認安裝

如果界面提示Jenkins正在啓動,請稍後...或者提示Please wait while Jenkins is getting ready to work...
解決方法
需要你進入jenkins的工作目錄,打開 hudson.model.UpdateCenter.xml 把 http://updates.jenkins-ci.org/update-center.json 改成 http://mirror.xmission.com/jenkins/updates/update-center.json

jenkins插件安裝及配置
插件安裝:
系統管理-->插件管理
1.按抓Maven Integration plugin
2.安裝sonarqube scanner for jenkins
3.Publish Over SSH --發佈到遠程服務器

系統配置:
系統管理-->全局工具配置
1.配置jdk
2.配置maven
3.配置sonar
4.郵件配置
系統管理-->系統設置-->郵件通知
smtp服務器 smtp.qq.combr/>用戶默認郵件後綴@qq.com
勾選ssl
Reply-to Address發件者郵箱
之後測試一下配置,無誤即可
郵箱密碼:
pop3/smtp:
jsuczrqattxojjch
iamp/smtp:
jynkwftobboyhcdi
5.配置gitlab授權
Cgedentials-->system-->global credentials
6.配置免密登錄gitlab
將jenkins所在服務器的公鑰id_rsa.pub的內容拷貝到gitlab項目上

pipeline特性
配置代碼化(Group)
將原本獨立運行於單個或者多個節點的任務連接起來,實現單個任務難以完成的複雜發佈流程。

pipeline基本概念
stage:階段,一個Pipeline可以劃分爲若干個Stage,每個stage代表一組操作。注意,stage是一個邏輯分組的概念,可以跨多個Node
Node:節點,一個Node就是一個jenjins節點,或者是Master,或者是Agent,是執行step的具體運行期環境。
Step:步驟,Step是最基本的操作單元,小到創建一個目錄,大到構建一個Docker鏡像,由各類Jenkins Plugin提供

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章