早期:故事:
寫個代碼為了某些需求要一些操作,比如復(fù)制粘貼用于備份。屬于手工管理代碼版本時代,隨著時間推移,手工版本成本太高。畢業(yè)論文最后一班,真最后一班,真真最后一班。有時候還需要用到昨天的版本。由此,需要制作一種工具、流程對版本進(jìn)行控制和切換。早期屬于集中式控制,SVN。中央庫。搜有人對中央服務(wù)器進(jìn)行提交。弊端:速度慢,我們可能需要大量時間浪費(fèi)在代碼提交,代碼遷出。所以就有了分布式版本控制,git。作者:維納斯。是unix keno 的開發(fā)人員,業(yè)界審計(jì)任務(wù)。當(dāng)他需要續(xù)費(fèi)的時候,他決定自己開發(fā)!開啟了分布式版本控制時代!keno編程了git。keno開發(fā)人員特別多。svn區(qū)別:有本地庫遠(yuǎn)程庫,本地庫是對遠(yuǎn)程庫的拷貝。在svn中的提交和推送 打斷
svn中情況,歇一天代碼,下班之前推送本,時間關(guān)系。
git中可以隨時提交,
svn是思想:萬物皆字節(jié)。二進(jìn)制流的差異比較,弊端:zip。相同的內(nèi)容多次打包那么二進(jìn)制流差異巨大。當(dāng)我把類庫更新的時候,差異很大。
git:以行作為保存單位。以文本的方式,(當(dāng)然也可以通過配置來進(jìn)行紫定華,文本按行,圖片按相似點(diǎn),)通過文件去比較。當(dāng)文件發(fā)聲沖突的時候,當(dāng)我們利郎個人同事修改一個文件的時候哦,遇到?jīng)_突。差異并不僅僅體現(xiàn)在不同的部分。git以行的單元進(jìn)行保存,則更加智能的對差異進(jìn)行識別。優(yōu)勢:不僅僅在于分布式,并且對于差異化有著更好的處理。
git概念難點(diǎn)
代碼,本地庫,遠(yuǎn)程庫。
本地庫是對遠(yuǎn)程源的拷貝。遠(yuǎn)程源可以有多個,默認(rèn)情況有一個。
主干開發(fā),分支開發(fā)。
分支概念:學(xué)習(xí)曲線略高。一般使用主干開發(fā),分支的創(chuàng)建,樹形結(jié)構(gòu),分支創(chuàng)建的起點(diǎn)和終點(diǎn)應(yīng)該在一個鏈上。
分支兩點(diǎn)之間一條線,就怕環(huán)形結(jié)構(gòu)。a——》b————》c
從哪來一定要回到哪里去。 我們的期望值是樹形結(jié)構(gòu)。
git開發(fā)分支開發(fā):在此一定要說gitflow
gitflow工作流:是一個對git的擴(kuò)展,不是自帶的,他將復(fù)雜抽象的git概念更加清晰。
(手動展示了一個本地源新項(xiàng)目,完成初始化。)
簡化為三件事情:
- 新功能
- 新版本
- 修復(fù)線上bug
約定大于配置,我們約定分成這三種事情。
主分支:master。第一次提交的默認(rèn)目標(biāo)分支。
當(dāng)gitflow初始化之后,又了master和devlop分支。
master永遠(yuǎn)是最新最完整的線上版本。
devlop永遠(yuǎn)是最新最完整的本地版本,可執(zhí)行!
開啟
呂寰打擾我一會兒。。。。
feature是最簡單的,
hotfix 熱修復(fù)
release發(fā)布版本
兩個分支
寫下作者名。
寫下當(dāng)前日期。
不同分支下不同人寫的東西互不影響。
審查分支,可以就結(jié)束分支。和到devlop
審查第二個分支,可以結(jié)束。河道devlop;
沖突,
<<<<<<<<<<<
魏濤
==========
2017-01-11
>>>>>>>>>>
不建議修改commit文本中的信息。
feature從devlop而來,回devlop而去。
發(fā)版本:1.0
提交之后,完成當(dāng)前版本。(剛才是完成當(dāng)前分支。)
release最終回到的位置是,先回到master,再回到devlop,然后在master上打一個tag,名字就是分支名字。
hotfix:1.0.1,一定是開始于master、
工作流:
github有自己的工作流
開源軟件如何
fork : 拷貝名下
pull request:以一個分支的形式退給作者。
在gitflow里面,沒有明確代碼審核的環(huán)節(jié)。
github自帶的有審核環(huán)節(jié)。
抓取
拉取
推送
commit
pull
push
fetch
stash
。