Git&GitHub
1 版本控制工具應(yīng)該具備的功能
協(xié)同修改
多人并行不悖的修改服務(wù)器端的同一個(gè)文件。
數(shù)據(jù)備份
不僅保存目錄和文件的當(dāng)前狀態(tài),還能夠保存每一個(gè)提交過的歷史狀態(tài)。
版本管理
在保存每一個(gè)版本的文件信息的時(shí)候要做到不保存重復(fù)數(shù)據(jù),以節(jié)約存儲(chǔ)空間,提高運(yùn)行效率。這方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系統(tǒng)快照的方式。
權(quán)限控制
對(duì)團(tuán)隊(duì)中參與開發(fā)的人員進(jìn)行權(quán)限控制。
對(duì)團(tuán)隊(duì)外開發(fā)者貢獻(xiàn)的代碼進(jìn)行審核——Git 獨(dú)有。
歷史記錄
查看修改人、修改時(shí)間、修改內(nèi)容、日志信息。
將本地文件恢復(fù)到某一個(gè)歷史狀態(tài)。
分支管理
允許開發(fā)團(tuán)隊(duì)在工作過程中多條生產(chǎn)線同時(shí)推進(jìn)任務(wù),進(jìn)一步提高效率。
2 版本控制簡介
2.1版本控制工程設(shè)計(jì)領(lǐng)域中使用版本控制管理工程藍(lán)圖的設(shè)計(jì)過程。在 IT 開發(fā)過程中也可以使用版本控制思想管理代碼的版本迭代。
2.2版本控制工具
思想:版本控制
實(shí)現(xiàn):版本控制工具
集中式版本控制工具:
CVS、SVN、VSS……
單點(diǎn)故障
分布式版本控制工具:(每個(gè)用戶機(jī),也都有版本歷史)意味可以本地庫傳本地不建議這么做
Git、Mercurial、Bazaar、Darcs……
3 Git 簡介 p4-p9
3.1Git 簡史 p4
3.2Git 官網(wǎng)和 Logo
官網(wǎng)地址:https://git-scm.com/
Logo:
3.3Git 的優(yōu)勢 p5
大部分操作在本地完成,不需要聯(lián)網(wǎng)
完整性保證(提交每條數(shù)據(jù)進(jìn)行hash運(yùn)算)
盡可能添加數(shù)據(jù)而不是刪除或修改數(shù)據(jù)
分支操作非??旖萘鲿?1因?yàn)橛每煺?2每個(gè)分支只是創(chuàng)建一個(gè)指針)
與 Linux 命令全面兼容()
3.4Git 安裝 windows安裝 p6
https://www.cnblogs.com/wlming/p/12213876.html Windows安裝
(linux直接yum install -y git),加-y自動(dòng)選擇y,全自動(dòng)
2下面默認(rèn)設(shè)置就行:下圖(下一步) 3這個(gè)的下一步也使用默認(rèn) 直接下一步
4 選擇默認(rèn)的文本編輯器
5 然后修改環(huán)境變量(選第一完全不修改),下面選項(xiàng)第二個(gè)(是被認(rèn)為安全的)
6 選擇客服端本地庫和遠(yuǎn)程庫連接方式(1通用連接2使用Windows連接方式)
7 選擇換行符的方式(1檢查文件時(shí)LF 轉(zhuǎn)為 CRLF 提交相反)
8 選擇終端(1Git默認(rèn)終端(是liunx命令)2選擇Windows終端(wind命令))
9 使用默認(rèn)(選擇第二個(gè)需要安裝.NET framework c4.5.1以上版本)
NET framework安裝失敗解決方案:
https://jingyan.baidu.com/article/fb48e8bee50ebf6e632e1464.html
10
11 (1加載他的git Bash終端2查看更新的文檔)
3.5Git 結(jié)構(gòu) p7
3.6Git和代碼托管中心 p8
代碼托管中心的任務(wù):維護(hù)遠(yuǎn)程庫
局域網(wǎng)環(huán)境下
GitLab 服務(wù)器
外網(wǎng)環(huán)境下
GitHub
碼云
3.7本地庫和遠(yuǎn)程庫(上面3.5是git結(jié)構(gòu))p9
3.7.1 團(tuán)隊(duì)內(nèi)部協(xié)作
3.7.2 跨團(tuán)隊(duì)協(xié)作 p9
4 Git 命令行操作 p10-p2
4.1本地庫初始化 p10 (我的:e盤下/may/GitSpaceVideo/WeChat)
命令:git init (切換到目錄>右鍵Git Bash Here>用liunx命令到對(duì)應(yīng)目錄下>初始化)
效果: 會(huì)在當(dāng)前目錄 生成.get目錄(隱藏的)
注意:.git 目錄中存放的是本地庫相關(guān)的子目錄和文件,不要?jiǎng)h除,也不要胡亂修改。
4.2設(shè)置簽名 (本地庫初始化后,要執(zhí)行的)p11
形式
用戶名:tom
Email 地址:goodMorning@atguigu.com
作用:區(qū)分不同開發(fā)人員的身份
辨析:這里設(shè)置的簽名和登錄遠(yuǎn)程庫(代碼托管中心的賬號(hào)、密碼沒有任何關(guān)系)
命令
項(xiàng)目級(jí)別/倉庫級(jí)別:(不帶參數(shù)-)僅在當(dāng)前本地庫范圍內(nèi)有效
git config user.name tom_pro
git config user.email goodMorning_pro@taku.com
? 信息保存位置:./.git/config 文件
系統(tǒng)用戶級(jí)別:登錄當(dāng)前操作系統(tǒng)的用戶范圍
git config --global user.name tom_glb
git config --global user.email goodMorning_glb@taku.com
信息保存位置:~/.gitconfig 文件 (家目錄下c/user)
級(jí)別優(yōu)先級(jí)
1就近原則:項(xiàng)目級(jí)別優(yōu)先于系統(tǒng)用戶級(jí)別,二者都有時(shí)采用項(xiàng)目級(jí)別的簽名
2如果只有系統(tǒng)用戶級(jí)別的簽名,就以系統(tǒng)用戶級(jí)別的簽名為準(zhǔn)3二者都沒有不允許
4.3基本操作(查看狀態(tài).提交暫存區(qū)和本地庫.歷史查看.) p12-p22
4.3.1 狀態(tài)查看
git status /*第一代表是那個(gè)分區(qū)的,第2是否提交3有沒有可提交的文件和提示
查看工作區(qū)、暫存區(qū)狀態(tài)
4.3.2 添加/撤回>暫存區(qū) (已經(jīng)add的文件,修改后可以直接commit)
git add [file name] /*提交到暫存區(qū),并且轉(zhuǎn)換換行符
將工作區(qū)的“新建/修改”添加到暫存區(qū)
git rm --cached good.txt 從暫存區(qū)撤回
4.3.3 提交(這里和安裝是選擇vim編輯器有關(guān))
修改后4.3.1查開提示(git status命令)modified: good.txt
git commit file /*需要輸入提交信息日志>寫完wq(下面不需要進(jìn)入vim)
git commit -m “commit message” [file name] 將暫存區(qū)的內(nèi)容提交到本地庫
git restore 撤銷某個(gè)文件修改的操作
git reset HEAD 可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)
4.3.4 查看歷史記錄(4中查詢) p14-p15
git log 查看版本記錄
多屏顯示控制方式:空格向下翻頁 ,b 向上翻頁 ,q 退出(超過了自動(dòng)多屏)
git log --pretty=oneline 每個(gè)歷史只顯示一行(hash值和日志)
git log --oneline 每個(gè)歷史只顯示一行且顯示hash的部分值
git reflog 顯示歷史只顯示一行,并且顯示指針(要移動(dòng)到版本多少步)
HEAD@{移動(dòng)到當(dāng)前版本需要多少步}
4.3.5 前進(jìn)后退 (三方式) p16-18
本質(zhì):指針移動(dòng)
1基于索引值操作[推薦] p17
git reset --hard [局部索引值]
git reset --hard a6ace91
2 使用^符號(hào):只能后退 p18
git reset --hard HEAD^^
注:一個(gè)^表示后退一步,n 個(gè)^表示后退 n 步
3使用~符號(hào):只能后退 p18
git reset --hard HEAD~n 注:表示后退 n 步
git reset --hard HEAD~3 表示后退3步
4.3.6 reset 命令的三個(gè)參數(shù)對(duì)比 p19
(查看命令幫助文檔: git help reset)
–soft 參數(shù)
僅僅在本地庫移動(dòng) HEAD 指針 (查看狀態(tài)時(shí),綠色提示,本地庫和暫存區(qū)不同步)
–mixed 參數(shù)
在本地庫移動(dòng) HEAD 指針
重置暫存區(qū)
–hard 參數(shù)
在本地庫移動(dòng) HEAD 指針
重置暫存區(qū)
重置工作區(qū)
4.3.7 刪除文件并找回 p20-p21,p22筆記總結(jié)
前提:刪除前,文件存在時(shí)的狀態(tài)提交到了本地庫。
進(jìn)入的文件目錄> rm 文件名(rm aaa.txt)刪除本地文件>然后提交到暫存區(qū)git add aaa.txt >然后提交到本地倉庫git commit -m ”delete aaa” aaa.txt (刪除完成)
找回操作:git reset --hard [指針位置]
刪除操作已經(jīng)提交到本地庫:指針位置指向歷史記錄(回到之前未刪除版本)
刪除操作尚未提交到本地庫:指針位置使用 HEAD(git reset --hard HEAD)
4.3.8 比較文件差異 p23
git diff [文件名] 將工作區(qū)中的文件和暫存區(qū)進(jìn)行比較
git diff [本地庫中歷史版本] [文件名]
eg: git diff HEAD^ apple.txt 可以用HEAD或者版本索引值
將工作區(qū)中的文件和本地庫歷史記錄比較
不帶文件名比較多個(gè)文件
4.4分支管理 p24-p26
4.4.2什么是分支?
1在版本控制過程中,使用多條線同時(shí)推進(jìn)多個(gè)任務(wù)。
2分支的好處?
同時(shí)并行推進(jìn)多個(gè)功能開發(fā),提高開發(fā)效率
各個(gè)分支在開發(fā)過程中,如果某一個(gè)分支開發(fā)失敗,不會(huì)對(duì)其他分支有任何影響。失敗的分支刪除重新開始即可。
4.4.3 分支操作 p25
o1創(chuàng)建分支: git branch [分支名] /*例: git branch hot_fix
o2查看分支: git branch -v
o3切換分支: git checkout [分支名] /*git checkout hot_fix
o4合并分支:git merge [有新內(nèi)容分支名]
o4 刪除分支:git branch –d [分支名]
git checkout [被合并分支名master] /*切換分支
第二步:執(zhí)行 merge 命令 (合并分支指令)
git merge [有新內(nèi)容分支名]
hot_fix a865afb hot_fix commit apple /*合并后查詢分支效果
- master a865afb hot_fix commit apple
o5解決沖突 p26
沖突原因: 2個(gè)分支,修改同一文件,同一位置,修改內(nèi)容不一樣時(shí).
沖突的表現(xiàn):
沖突的解決:
第一步:編輯文件,刪除特殊符號(hào)
第二步:把文件修改到滿意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m “日志信息”
注意:此時(shí) commit 一定不能帶具體文件名
5 Git 基本原理 P27-p29
5.1哈希 p27
哈希是一個(gè)系列的加密算法,各個(gè)不同的哈希算法雖然加密強(qiáng)度不同,但是有以下
幾個(gè)共同點(diǎn):
①不管輸入數(shù)據(jù)的數(shù)據(jù)量有多大,輸入同一個(gè)哈希算法,得到的加密結(jié)果長度固定。
②哈希算法確定,輸入數(shù)據(jù)確定,輸出數(shù)據(jù)能夠保證不變
③哈希算法確定,輸入數(shù)據(jù)有變化,輸出數(shù)據(jù)一定有變化,而且通常變化很大
④哈希算法不可逆
Git 底層采用的是 SHA-1 算法。
哈希算法可以被用來驗(yàn)證文件。原理如下圖所示:(傳輸前后hash值對(duì)比)
Git 就是靠這種機(jī)制來從根本上保證數(shù)據(jù)完整性的。
5.2Git 保存版本的機(jī)制
5.2.1 集中式版本控制工具的文件管理機(jī)制
以文件變更列表的方式存儲(chǔ)信息。這類系統(tǒng)將它們保存的信息看作是一組基本文件和每個(gè)文件隨時(shí)間逐步累積的差異。SVN
5.2.2 Git 的文件管理機(jī)制
Git 把數(shù)據(jù)看作是小型文件系統(tǒng)的一組快照。每次提交更新時(shí) Git 都會(huì)對(duì)當(dāng)前的全部文件制作一個(gè)快照并保存這個(gè)快照的索引。為了高效,如果文件沒有修改, Git 不再重新存儲(chǔ)該文件,而是只保留一個(gè)鏈接指向之前存儲(chǔ)的文件。所以 Git 的工作方式可以稱之為快照流。
5.2.3 Git 文件管理機(jī)制細(xì)節(jié)
Git 的“提交對(duì)象” (每個(gè)文件對(duì)應(yīng)的hash值)
提交對(duì)象及其父對(duì)象形成的鏈條
5.3Git 分支管理機(jī)制 p29
5.3.1 分支的創(chuàng)建(就是新建一個(gè)指針)
5.3.2 分支的切換 (HEAD指向)
3 HEAD指向testing時(shí)提交了內(nèi)容
4 切換回 master
5 HEAD指向master時(shí) 提交了數(shù)據(jù)
6 GitHub p30-p42
6.1賬號(hào)信息
GitHub 首頁就是注冊(cè)頁面:https://github.com/
Email 地址:atguigu2018ybuq@aliyun.com
GitHub 賬號(hào):atguigu2018ybuq
Email 地址:atguigu2018lhuc@aliyun.com
GitHub 賬號(hào):atguigu2018lhuc
Email 地址:atguigu2018east@aliyun.com
GitHub 賬號(hào):atguigu2018east
6.2創(chuàng)建遠(yuǎn)程庫 p34
6.3創(chuàng)建遠(yuǎn)程庫地址別名 p35
git remote -v 查看當(dāng)前所有遠(yuǎn)程地址別名
git remote add [別名origin] [遠(yuǎn)程地址]
6.4推送 p36
git push [別名] [分支名] git push origin master /*回車可能需要等待一會(huì)會(huì),彈出對(duì)話框>輸入用戶和密碼)
6.5克隆 p37
命令 git clone [遠(yuǎn)程地址] /*
成功:
克隆效果:
完整的把遠(yuǎn)程庫下載到本地
創(chuàng)建 origin 遠(yuǎn)程地址別名 (git remote -v查看遠(yuǎn)程庫別名)
初始化本地庫(就是:git init)
6.6團(tuán)隊(duì)成員邀請(qǐng)(邀請(qǐng)用戶才能提交)p38
和老師筆記不一樣的地方
“岳不群”其他方式把邀請(qǐng)鏈接發(fā)送給“令狐沖”,“令狐沖”登錄自己的 GitHub 賬號(hào),訪問邀請(qǐng)鏈接。
點(diǎn)擊接受 >然后在執(zhí)行推送
:推送了第一次在此推送不要輸入用戶名:git 本身不具備記錄功能,Windows中憑據(jù)管理器記錄用戶名和密碼
控制面板\所有控制面板項(xiàng)\憑據(jù)管理器(如果想切換用戶:刪除記錄)
lhc>提交后>>然后推送 git push origin master
6.7拉取 p39
pull=fetch+merge
git fetch [遠(yuǎn)程庫地址別名origin] [遠(yuǎn)程分支名master] /*抓去下來
git checkout origin/master /*切換到鏈接地址(別名)的master(可查看抓取下來內(nèi)容
切換回 git checkout master
git merge [遠(yuǎn)程庫地址別名origin/master遠(yuǎn)程分支名] /*合并
git pull [遠(yuǎn)程庫地址別名] [遠(yuǎn)程分支名] /*等于上面步驟
6.8解決沖突 p40
要點(diǎn)
如果不是基于 GitHub 遠(yuǎn)程庫的最新版所做的修改,不能推送,必須先拉取。
拉取下來后如果進(jìn)入沖突狀態(tài),則按照“分支沖突解決”操作解決即可。
類比
債權(quán)人:老王
債務(wù)人:小劉
老王說:10 天后歸還。小劉接受,雙方達(dá)成一致。
老王媳婦說:5 天后歸還。小劉不能接受。老王媳婦需要找老王確認(rèn)后再執(zhí)行。
6.9跨團(tuán)隊(duì)協(xié)作 p41
1(先復(fù)制當(dāng)前庫地址,發(fā)式給dfbb,然后有dfbb登錄訪問這個(gè)地址)>然后Fork
正在fork的界面
fork 過來的倉庫說明 回多下面一行(forked from at…)說明fork來源
2 dfbb(”東方不敗”)本地修改,然后推送到遠(yuǎn)程 git push origin master
3 dfbb在遠(yuǎn)程庫中選擇Pull Request
3.2然后點(diǎn)擊里面的New pull requset
3.3 然后點(diǎn)擊 Create pull request
3.4 然后發(fā)送消息給,fork的庫(ybq(岳不群))
4 ybq操作
5
5.2對(duì)話 (這時(shí)還可以相互對(duì)話)
6 審核代碼
合并代碼 (回到對(duì)話Conversation>>合并操作如圖)
上面操作完了就遠(yuǎn)程庫就有合并內(nèi)容>然后>將遠(yuǎn)程庫修改拉取到本地
6.10SSH 登錄記錄用戶(http地址 如果不能記錄登錄用戶) p42
1進(jìn)入當(dāng)前用戶的家目錄
$ cd ~
2刪除.ssh 目錄
$ rm -rvf .ssh
3運(yùn)行命令生成.ssh 密鑰目錄
$ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com
[注意:這里-C 這個(gè)參數(shù)是大寫的 C] 3.2后面直接回車(使用默認(rèn))
4進(jìn)入.ssh 目錄查看文件列表
$ cd .ssh
$ ls -lF
5 查看 id_rsa.pub 文件內(nèi)容
$ cat id_rsa.pub
6復(fù)制 id_rsa.pub 文件內(nèi)容,登錄 GitHub,點(diǎn)擊用戶頭像→Settings→SSH and GPG keys
→New SSH Key
然后>>key中輸入復(fù)制的密鑰信息 Title 自定義輸入標(biāo)題
7回到工作區(qū)cd > 創(chuàng)建遠(yuǎn)程地址別名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
8推送文件進(jìn)行測試
7 Eclipse 操作 p43-p53
7.1工程初始化為本地庫 (p44) 先創(chuàng)建一個(gè)Maven工程,
工程→右鍵→Team→Share Project→Git
2 Create Repository
3 Finish
7.1.2Eclipse中設(shè)置 簽名:window>prefer.>Team>Git>Configuration>Reposit…
1 設(shè)置用戶名字 p45
2 設(shè)置用戶email
Eclipse查看git文件標(biāo)識(shí)說明: window>prefer.>Team>Git>Label D… p46
Eclipse:文件追蹤添加到緩存區(qū):文件/項(xiàng)目> 右鍵>>Team>Commit p47
Eclipse查看項(xiàng)目中的所有文件的Navigator窗口打開
7.2Eclipse 忽略文件 p47-49
概念:Eclipse 特定文件
這些都是 Eclipse 為了管理我們創(chuàng)建的工程而維護(hù)的文件,和開發(fā)的代碼沒有直接關(guān)系
最好不要在 Git 中進(jìn)行追蹤,也就是把它們忽略。
.classpath 文件
.project 文件
.settings 目 錄下所有文件
為什么要忽略 Eclipse 特定文件呢?同一個(gè)團(tuán)隊(duì)中很難保證大家使用相同的 IDE 工具,而 IDE 工具不同時(shí),相關(guān)工程特定文件就有可能不同。如果這些文件加入版本控制,那么開發(fā)時(shí)很可能需要為了這些文件解決沖突。
(文件忽略)GitHub 官網(wǎng)樣例文件 p48
https://github.com/github/gitignore https://github.com/github/gitignore/blob/master/Java.gitignore
文件忽略具體步驟 p48
1 編輯本地忽略配置文件,文件名任意(eg:在家目錄下創(chuàng)建Java.gitignore )
1.2 Java.gitignore 文件編輯如下:
Compiled class file *
.class
Log file *
.log
BlueJ files *
.ctxt
Mobile Tools for Java (J2ME)
.mtj.tmp/
Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
2在~/.gitconfig 文件中引入上述文件 :如下
[core]
excludesfile = C:/Users/Lenovo/Java.gitignore
[注意:這里路徑中一定要使用“/”,不能使用“\”]
3完成后在Eclipse查看.gitconfig 配置:window>prefer.>Team>Git>Configuration
3.2 重啟eclipse >Navigator窗口查看忽略是否成功
7.2.2 提交暫存區(qū)/和提交到庫 p49
1提交到暫存區(qū):項(xiàng)目右鍵>Team> add to Index (或者上面p47 添加到緩存區(qū))
2 提交到本地庫中: 項(xiàng)目右鍵>Team>Commit (我的快捷鍵:ctrl+shift+#)
7.3推送到遠(yuǎn)程庫 p50 (:在GitHub創(chuàng)建新的遠(yuǎn)程庫,名為TestGit)
URI: 粘貼在GitHub復(fù)制的地址,后面2個(gè)默認(rèn);User賬號(hào),下面:密碼
點(diǎn)擊Add All Bran… > 然后下一步/或者直接Finish
可以添加一些日志信息>Finis
執(zhí)行成功的結(jié)果
7.4Oxygen Eclipse 克隆工程操作 p51
1 Import…導(dǎo)入工程
2 到遠(yuǎn)程庫復(fù)制工程地址
3粘貼到URL 如下: >然后點(diǎn)擊next
4 選擇分支 Next
5指定工程的保存位置(最好選擇eclipse工作區(qū)) 然后next
等待下載
6指定工程導(dǎo)入方式,這里只能用:Import as general project (作為普通工程導(dǎo)入)
7 點(diǎn)擊Finish
8 轉(zhuǎn)換工程類型 (導(dǎo)入進(jìn)來的不適合編寫.需要修改Eclipse工程)
9最終效果
7.5Kepler Eclipse 克隆工程操作p52(版本比較低的Eclipse)
問題:不能保存到當(dāng)前 Eclipse 工作區(qū)目錄 (和上面第5步不同)
放在工作區(qū)[第7 步時(shí)]不能導(dǎo)入,如下圖:
正確做法:保存到工作區(qū)以外的目錄中,其他的和上面都一樣
7.6解決沖突 p53
Eclipse制造沖突
1分別修改TestGit和TestGit2同一文件同一位置
2 然后:都提交到本地庫,快捷ctrl+shift+#(他們兩人個(gè)是個(gè)的本地庫)
3然后TestGit推送到遠(yuǎn)程庫(這里不是首次推送和上面不同 如下:)
工程右鍵>Team>Push Branch ‘master’)(所以默認(rèn)直接下一步)>>等條讀完(彈出對(duì)話窗口)
4這時(shí)TestGit2不能推送,會(huì)出現(xiàn)這個(gè)圖 ,因?yàn)椴皇亲钚掳姹?
更新:右鍵>Team>pull
Eclipse解決沖突
1 沖突文件→右鍵→Team→Merge Tool
2修改完成后Eclipse正常執(zhí)行[該文件] add/commit 操作即可
8 Git 工作流(3種)p54-
8.1概念在項(xiàng)目開發(fā)過程中使用
Git 的方式
8.2分類
8.2.1 集中式工作流像 () p54
SVN 一樣,集中式工作流以中央倉庫作為項(xiàng)目所有修改的單點(diǎn)實(shí)體。所有修改都提交到 Master 這個(gè)分支上。
這種方式與 SVN 的主要區(qū)別就是開發(fā)人員有本地庫。Git 很多特性并沒有用到。
8.2.2 GitFlow 工作流(最金典,用得最多)
Gitflow 工作流通過為功能開發(fā)、發(fā)布準(zhǔn)備和維護(hù)設(shè)立了獨(dú)立的分支,讓發(fā)布迭代過程更流暢。嚴(yán)格的分支模型也為大型項(xiàng)目提供了一些非常必要的結(jié)構(gòu)。
8.2.3 Forking 工作流()
Forking 工作流是在 GitFlow 基礎(chǔ)上,充分利用了 Git 的 Fork 和 pull request 的功能以達(dá)到代碼審核的目的。更適合安全可靠地管理大團(tuán)隊(duì)的開發(fā)者,而且能接受不信任貢獻(xiàn)者的提交。
8.3GitFlow 工作流詳解
8.3.1 分支種類
主干分支 master
主要負(fù)責(zé)管理正在運(yùn)行的生產(chǎn)環(huán)境代碼,永遠(yuǎn)保持與正在運(yùn)行的生產(chǎn)環(huán)境完全一致
開發(fā)分支 develop
主要負(fù)責(zé)管理正在開發(fā)過程中的代碼。一般情況下應(yīng)該是最新的代碼。
bug 修理分支 hotfix
主要負(fù)責(zé)管理生產(chǎn)環(huán)境下出現(xiàn)的緊急修復(fù)的代碼。從主干分支分出,修理完畢并測試上線后,并回主干分支。并回后,視情況可以刪除該分支。
準(zhǔn)生產(chǎn)分支(預(yù)發(fā)布分支) release
較大的版本上線前,會(huì)從開發(fā)分支中分出準(zhǔn)生產(chǎn)分支,進(jìn)行最后階段的集成測試。該版本上線后,會(huì)合并到主干分支。生產(chǎn)環(huán)境運(yùn)行一段階段較穩(wěn)定后可以視情況刪除。
功能分支 feature
為了不影響較短周期的開發(fā)工作,一般把中長期開發(fā)模塊,會(huì)從開發(fā)分支中獨(dú)立出來。開發(fā)完成后會(huì)合并到開發(fā)分支。
8.3.2 GitFlow 工作流舉例 p54
下面是GitFlow 工作流舉例圖:
8.3.3 分支實(shí)戰(zhàn) p55
8.3.4 具體操作 p56
1創(chuàng)建分支: 右鍵>Team>Switch To >New Branch
2給分支命名>Finish (創(chuàng)建后自動(dòng)切換到分支)
3修改分支hot_fix的happy.java的內(nèi)容(要避免沖突),提交到本地庫
4 遠(yuǎn)程推送到遠(yuǎn)程庫
選擇文件happy.java>> 右鍵>> Repository>>Pish Branch ’hot_fix’
4.2 然后下一步>>然后(沒截圖)push
4.3 等待一會(huì)兒,彈出下面對(duì)話窗口說明成功了
o5 ybq拉取操作不不需要選擇分支:(這里有TestGit2模擬岳不群)
項(xiàng)目右鍵>Team>Pull
補(bǔ)充:/*上面操作如果說沒有更新(上面沒問題從這到>o6之間不用看)
項(xiàng)目右鍵>Team>Remote>Fetch Tags
o6切換分支審查代碼:項(xiàng)目右鍵>Team>Switch To > Other
o7 選擇分支
o8
o9創(chuàng)建新分支,選擇Check out new branch為檢出遠(yuǎn)程新分支
o10切換回 master
o11合并分支
合并結(jié)果
合并后直接提交到遠(yuǎn)程庫(本地庫已經(jīng)提交)
9 Gitlab 服務(wù)器搭建過程
9.1官網(wǎng)地址
首頁:https://about.gitlab.com/
安裝說明:https://about.gitlab.com/installation/
9.2安裝命令摘錄
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo EXTERNAL_URL=“http://gitlab.example.com” yum -y install gitlab-ee
實(shí)際問題:yum 安裝 gitlab-ee(或 ce)時(shí),需要聯(lián)網(wǎng)下載幾百 M 的安裝文件,非常耗時(shí),所以應(yīng)提前把所需 RPM 包下載并安裝好。
下載地址為:
https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
9.3調(diào)整后的安裝過程 ee是企業(yè)版本 ce是社區(qū)版本
sudo rpm -ivh /opt/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL=“http://gitlab.example.com” yum -y install gitlab-ce
當(dāng)前步驟完成后重啟。
9.4gitlab 服務(wù)操作 60
初始化配置 gitlab
gitlab-ctl reconfigure
啟動(dòng) gitlab 服務(wù)
gitlab-ctl start
停止 gitlab 服務(wù)
gitlab-ctl stop
9.5瀏覽器訪問 61
訪問 Linux 服務(wù)器 IP 地址即可,如果想訪問 EXTERNAL_URL 指定的域名還需要配置域名服務(wù)器或本地 hosts 文件。
初次登錄時(shí)需要為 gitlab 的 root 用戶設(shè)置密碼。文章來源:http://www.zghlxwxcb.cn/news/detail-767204.html
root/atguigu2018good
※應(yīng)該會(huì)需要停止防火墻服務(wù): service firewalld stop文章來源地址http://www.zghlxwxcb.cn/news/detail-767204.html
到了這里,關(guān)于Git&GitHub的使用方法及具體的介紹說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!