自動(dòng)拉取是云原生的一個(gè)重要特征,無論是自動(dòng)拉取源代碼,還是自動(dòng)拉取依賴庫,還是自動(dòng)拉取軟件包,乃至自動(dòng)拉取容器鏡像等,自動(dòng)拉取直接服務(wù)于持續(xù)集成(Continuous Integration)。對(duì)于一個(gè)需要持續(xù)更迭的線上項(xiàng)目來說,“持續(xù)”二字太重要,畢竟大家都面對(duì)著激烈的競(jìng)爭(zhēng)。舉個(gè)例子,某公司創(chuàng)意產(chǎn)品一直在流量榜前幾位,馬上就要推出自己的盈利點(diǎn)了,當(dāng)然也有好幾家競(jìng)品在虎視眈眈,這時(shí)候在在線升級(jí)的時(shí)候出現(xiàn)了拉取問題,版本問題也罷,功能bug也罷,集群過載也罷,總之就被別的公司搶了先機(jī)。目前對(duì)于個(gè)人開發(fā)者而言,持續(xù)集成的理念完全由git的思想先入為主,倒也沒有什么太大問題。持續(xù)集成、持續(xù)交付、持續(xù)部署的過程如下圖所示,在merge這一環(huán)節(jié),僅剩git和svn兩大技術(shù),svn也越來越少。
最開始人們使用單文件的時(shí)候,另存為一下重命名個(gè)日期,版本管理就完成了;那多個(gè)文件呢?重新復(fù)制整個(gè)文件夾,文件夾重新命個(gè)名字就好了。幾個(gè)問題:成本太高(存儲(chǔ),每次比對(duì)的校驗(yàn)計(jì)算),不好協(xié)作,不好回退,不好分發(fā)。
不好協(xié)作對(duì)于大公司而言是個(gè)大問題,SVN應(yīng)運(yùn)而生,利用開發(fā)分支和鎖概念,每個(gè)人都可以很好向匯總的服務(wù)器端提交自己的代碼,最后形成一個(gè)整體,而且可以較好地實(shí)現(xiàn)服務(wù)器端的回退和向客戶的分發(fā)。svn簡(jiǎn)單易上手,但分支管理就是采用文件夾復(fù)制的類似模式,成本還是太高,而且過分依賴網(wǎng)絡(luò),在分布式開發(fā)成為常態(tài)的今天集中存儲(chǔ)于服務(wù)端缺點(diǎn)的弊端越來越明顯。于是BitKeeper就出現(xiàn)了,作為git的原型,BitKeeper剛開始是閉源的,引入了很多現(xiàn)在git的技術(shù)理念:比如引入修改模型元數(shù)據(jù)、倉庫等一系列概念。可惜不開源,Linux之父Torvalds 開始著手開發(fā) Git 是為了作為一種過渡方案來替代 BitKeeper,Git開源,后來又出現(xiàn)了Github這一代碼托管服務(wù)網(wǎng)站,火遍大江南北。2018年6月4日,微軟宣布,通過75億美元的股票交易收購代碼托管平臺(tái)GitHub。
Git客戶端安裝很簡(jiǎn)單,Linux下使用包管理工具比如yum,windows使用官網(wǎng)安裝包安裝即可。
對(duì)于Git第一步的使用,還是有幾個(gè)必要關(guān)鍵的點(diǎn)。
# 第一步是確定自己的身份
git config --global user.name "xx"
git config --global user.email "xx@xx.com"
# 第二步是讓遠(yuǎn)端服務(wù)器信任自己
# 例如github就是使用ssh進(jìn)行工作的
# 事先要生成自己的密鑰對(duì),加密過程通信安全
ssh-keygen -t rsa -C "git的郵箱"
# 將生成的公鑰復(fù)制到git服務(wù)端
# 這一步一般是在網(wǎng)頁上完成
# 第三步,本地倉庫的一些操作
# 初始化本地倉庫/創(chuàng)建新的倉庫
git init
# 復(fù)制一個(gè)新的倉庫
git clone /path/to/repository
git clone username@host:/path/to/repository
# 添加與提交
git add <filename>
git add *
git commit -m "代碼提交信息"
# 分支管理
# 創(chuàng)建一個(gè)叫做“feature_x”的分支,并切換過去
git checkout -b feature_x
# 切換回主分支:
git checkout master
# 再把新建的分支刪掉:
git branch -d feature_x
# 第四步:與服務(wù)器端倉庫的互動(dòng)
# 增加遠(yuǎn)端倉庫地址
git remote add origin <server_git>
# 將本地倉庫同步到github遠(yuǎn)程倉庫主分支
git push -u origin master
# 如果有分支的話,除非你將分支推送到遠(yuǎn)端倉庫,不然該分支就是 不為他人所見的:
git push origin <branch>
# 第五步:更新與合并
# 要更新你的本地倉庫至最新改動(dòng)
git pull
# 要合并其他分支到你的當(dāng)前分支(例如 master)
git merge <branch>
# 有沖突的話,逐個(gè)選擇接受誰的
工具和技術(shù)的使用不是絕對(duì)的,有時(shí)候做一個(gè)ppt能做到千萬融資,這就勝過融資前展示演示的軟件代碼。
瑞士軍刀不一定比不上屠龍寶刀,袖珍手槍對(duì)歷史的影響也不亞于導(dǎo)彈大炮。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。