使用git管理嵌入式軟件版本
掃描二維碼
隨時隨地手機看文章
點擊上方藍(lán)字關(guān)注我哦~
你現(xiàn)在的Keil工程的版本控制是怎么管理的?可能有些人的做法是發(fā)布一個版本軟件后將代碼打一個包保存起來,作為此版本的備份。有一種常見的情況,當(dāng)開始一項新功能的開發(fā),并且最終的效果不理想老板要求回退回去。又恰巧在開發(fā)前沒有打個包保存一下初始版本,那就需要一處一處回改,這樣手工回退后的版本可靠性就下降許多,需要完整的測試才行。為了避免這種尷尬的情況,有必要在keil工程也引入版本控制工具。
Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds (Linux發(fā)明者)為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。這個誕生于2005年并且至今都使得開發(fā)者贊不絕口的工具,實際上Linus僅開發(fā)了兩周并在一個月內(nèi)就上線用于管理龐大的Linux內(nèi)核了,不得不贊嘆天才的偉大和凡人的不可企及。
時至今日,Git早已在Android開發(fā)、Linux開發(fā)、web開發(fā)等場景成為最通行的版本管理工具,另外一些IDE集成開發(fā)環(huán)境也加入了Git,例如Android Studio, Intellij IDEA等。嵌入式開發(fā)常用的Keil也在keil5.15后也已經(jīng)集成了版本管理工具,但是本文仍然是就Windows版Git管理Keil工程的示例,方便老版本的keil項目建立git管理。Keil5內(nèi)集成的git的使用方法有機會再整理出來。
Git的實用性也逐漸帶來了git托管平臺的流行,如GitHub、GitLab、Bitbucket、Codeing.net、Gitee等。無數(shù)崇尚軟件開源的開發(fā)者揮灑著汗水在這些平臺上貢獻了數(shù)以億計的開源項目,使得咱們這些普通人可也以參與其中,接觸到最前沿的技術(shù)、最酷炫的功能。身為一個開發(fā)者也要學(xué)會在開源代碼上汲取這些全球精英所奉獻的新知識新技能。
關(guān)于Git的使用方法,可以參考廖雪峰的git教程,深入淺出非常實用。在這篇文章中主要講的是將一個既有的Keil工程加入git管理的方法。
01
安裝windows版git
可以去官網(wǎng)下載windows版本的git, https://git-scm.com/downloads
安裝完成后,在開始菜單內(nèi)找到Git Bash并啟動。啟動后的操作窗口類似于windows的cmd窗口。在bash窗口內(nèi)可以執(zhí)行Linux的一些shell指令。
安裝完成后,還需要設(shè)置郵箱地址和用戶名,在命令行輸入:
"Your Name" git config --global user.name
"email@example.com" git config --global user.email
因為Git是分布式版本控制系統(tǒng),可以多人在一起開發(fā)。所以每次提交,每次上傳,都會帶有你這臺電腦的標(biāo)記——郵箱地址和用戶名。
02
本地建立git庫
以/D/PROJ/project的一個keil工程為例。
1.進入工程所在的目錄,使用ls指令查看是否正確的進入了目錄。
xxxx@DESKTOP-TH28NBD MINGW64 /
$ cd /D/PROJ/project/
xxxx@DESKTOP-TH28NBD MINGW64 /D/PROJ/project (master)
$ ls
inc/ Libraries/ README.en.md README.md RVMDK/ src/
2、初始化本地git倉庫
git init
在project的目錄下可以看到.git的目錄,該目錄包含讓 git 能夠正常工作所需的所有信息。
03
遠(yuǎn)程代碼托管平臺
Github和Gitlab是最流行的托管平臺,由于眾所周知的原因,這些國外的網(wǎng)站在國內(nèi)的訪問速度很不理想,國內(nèi)使用推薦gitee碼云或coding.net。以Gitee來舉例。
Gitee免費版可創(chuàng)建 1000 個倉庫,不限制公私有。單倉庫大小上限為 500M,單文件最大 50M,用戶總倉庫容量為 5G。對于一般的keil嵌入式開發(fā),免費版已經(jīng)綽綽有余了。
1.注冊Gitee,根據(jù)網(wǎng)站的提示完成注冊。
2.配置ssh
本地Git倉庫和Gitee倉庫之間的傳輸是通過SSH加密的,所以需要配置ssh,使得托管平臺認(rèn)可你這臺電腦的git操作。在Git Bash內(nèi)執(zhí)行以下指令創(chuàng)建SSHkey。
ssh-keygen -t rsa -C youremail@example.com
把郵件地址換成你自己的郵件地址,然后回車一路使用默認(rèn)值即可。完成后在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以發(fā)送給他人。
Windows的目錄在c盤的用戶目錄內(nèi)。
3.上傳ssh公鑰到碼云
點擊右上角的用戶頭像,選擇設(shè)置。然后在設(shè)置頁面的左側(cè)功能欄選擇SSH公鑰。將剛才生成的id_rsd.pub的內(nèi)容拷貝進公鑰內(nèi)容框內(nèi),標(biāo)題隨意填寫。
4.創(chuàng)建項目倉庫
點擊頁面右上角的加號,并選擇新建倉庫。
04
本地提交代碼與推送遠(yuǎn)程庫
1.添加遠(yuǎn)端地址
git remote add origin ssh地址
如 git remote add origin git@gitee.com:xxxx/xxxx.git
ssh地址在gitee倉庫頁面點擊“克隆/下載”按鈕獲取。
可以通過 git remote -v指令查看遠(yuǎn)端的連接。
$ git remote -v
origin git@gitee.com:xxxx/PROJECTTEST.git (fetch)
origin git@gitee.com:xxxx/PROJECTTEST.git (push)
2.拉取遠(yuǎn)端版本到本地
git pull origin master
git pull origin master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (4/4), done.
From gitee.com:xxxx/PROJECTTEST
branch master -> FETCH_HEAD
[new branch] master -> origin/master
拉取成功后,本地目錄可以看到剛才創(chuàng)建gitee倉庫時創(chuàng)建的Readme文件。
3.本地提交代碼
將project內(nèi)原有的代碼,inc/ src/目提交到本地倉庫。
git add src/
git add inc/
git commit -m “first commit”
注意不要講編譯生成的文件add進去,只將代碼add進倉庫。因為編譯生成的文件每次編譯都會變化,這樣每次的版本提交都包含了這些非代碼改變的提交,不僅會使得版本很混亂也會占用很多遠(yuǎn)程倉庫的空間。當(dāng)然這也可以通過增加gitignore文件的方法來處理。
4.推送本地倉庫到遠(yuǎn)端
git push origin master
git push origin master
Enumerating objects: 32, done.
Counting objects: 100% (32/32), done.
Delta compression using up to 8 threads
Compressing objects: 100% (31/31), done.
Writing objects: 100% (31/31), 22.22 KiB | 2.78 MiB/s, done.
Total 31 (delta 12), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:xxxx/PROJECTTEST.git
master -> master
直接git push會提示警告
$ git push
fatal: The current branch mater has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
按照提示執(zhí)行g(shù)it push --set-upstream origin master,以后再推送版本,只需要輸入git push就可以了。
至此,將一個現(xiàn)有的keil工程加入git管理,并在遠(yuǎn)端托管平臺備份的操作都完成了,后面在這個工程上做開發(fā)并提交版本,就按照常規(guī)的git操作 git add、git commit、git push就可以了。本文開始提出的版本回退問題,只需要執(zhí)行g(shù)it reset –hard的指令,代碼就自動回退到指定的提交點了。更多的git功能,開發(fā)者可以在后續(xù)的實際開發(fā)中不斷學(xué)習(xí)完善,
/ The End /
本文系嵌入式案例Show原創(chuàng)出品,未經(jīng)許可,請勿轉(zhuǎn)載。
掃碼關(guān)注我們
看更多嵌入式案例
喜歡本篇內(nèi)容請給我們點個在看
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!