1. 程式人生 > 實用技巧 >將一個既有的Keil工程加入git管理的方法

將一個既有的Keil工程加入git管理的方法

摘自:https://www.stmcu.org.cn/module/forum/thread-626036-1-1.html

將一個既有的Keil工程加入git管理的方法

[複製連結]
gaosmile

該使用者從未簽到

1574

主題

1601

帖子

0

蝴蝶豆

版主

最後登入

2020-10-14

電梯直達 跳轉到指定樓層 樓主 發表於 2020-7-21 19:22:11 | 只看該作者 | 只看大圖 回帖獎勵
你現在的Keil工程的版本控制是怎麼管理的?可能有些人的做法是釋出一個版本軟體後將程式碼打一個包儲存起來,作為此版本的備份。有一種常見的情況,當開始一項新功能的開發,並且最終的效果不理想老闆要求回退回去。又恰巧在開發前沒有打個包儲存一下初始版本,那就需要一處一處回改,這樣手工回退後的版本可靠性就下降許多,需要完整的測試才行。為了避免這種尷尬的情況,有必要在keil工程也引入版本控制工具。
Git是一個開源的分散式版本控制系統,可以有效、高速地處理從很小到非常大的專案版本管理。Git 是 Linus Torvalds (Linux發明者)為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體。這個誕生於2005年並且至今都使得開發者讚不絕口的工具,實際上Linus僅開發了兩週並在一個月內就上線用於管理龐大的Linux核心了,不得不讚嘆天才的偉大和凡人的不可企及。 時至今日,Git早已在Android開發、Linux開發、web開發等場景成為最通行的版本管理工具,另外一些IDE整合開發環境也加入了Git,例如Android Studio, Intellij IDEA等。嵌入式開發常用的Keil也在keil5.15後也已經集成了版本管理工具,但是本文仍然是就Windows版Git管理Keil工程的示例,方便老版本的keil專案建立git管理。Keil5內整合的git的使用方法有機會再整理出來。
Git的實用性也逐漸帶來了git託管平臺的流行,如GitHub、GitLab、Bitbucket、Codeing.net、Gitee等。無數崇尚軟體開源的開發者揮灑著汗水在這些平臺上貢獻了數以億計的開源專案,使得咱們這些普通人可也以參與其中,接觸到最前沿的技術、最酷炫的功能。身為一個開發者也要學會在開原始碼上汲取這些全球精英所奉獻的新知識新技能。 關於Git的使用方法,可以參考廖雪峰的git教程,深入淺出非常實用。在這篇文章中主要講的是將一個既有的Keil工程加入git管理的方法。 01 安裝windows版git 可以去官網下載windows版本的git, http://git-scm.com/downloads
安裝完成後,在開始選單內找到Git Bash並啟動。啟動後的操作視窗類似於windows的cmd視窗。在bash視窗內可以執行Linux的一些shell指令。 安裝完成後,還需要設定郵箱地址和使用者名稱,在命令列輸入:
  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "[email protected]"
複製程式碼 因為Git是分散式版本控制系統,可以多人在一起開發。所以每次提交,每次上傳,都會帶有你這臺電腦的標記——郵箱地址和使用者名稱。 02 本地建立git庫 以/D/PROJ/project的一個keil工程為例。 1.進入工程所在的目錄,使用ls指令檢視是否正確的進入了目錄。
  1. [email protected] MINGW64 /
  2. $ cd /D/PROJ/project/
  3. [email protected] MINGW64 /D/PROJ/project (master)
  4. $ ls
  5. inc/Libraries/README.en.mdREADME.mdRVMDK/src/
複製程式碼 2、初始化本地git倉庫 git init 在project的目錄下可以看到.git的目錄,該目錄包含讓 git 能夠正常工作所需的所有資訊。 03 遠端程式碼託管平臺 Github和Gitlab是最流行的託管平臺,由於眾所周知的原因,這些國外的網站在國內的訪問速度很不理想,國內使用推薦gitee碼雲或coding.net。以Gitee來舉例。 Gitee免費版可建立 1000 個倉庫,不限制公私有。單倉庫大小上限為 500M,單檔案最大 50M,使用者總倉庫容量為 5G。對於一般的keil嵌入式開發,免費版已經綽綽有餘了。 1.註冊Gitee,根據網站的提示完成註冊。 2.配置ssh 本地Git倉庫和Gitee倉庫之間的傳輸是通過SSH加密的,所以需要配置ssh,使得託管平臺認可你這臺電腦的git操作。在Git Bash內執行以下指令建立SSHkey。
  1. ssh-keygen -t rsa -C [email protected]
複製程式碼 把郵件地址換成你自己的郵件地址,然後回車一路使用預設值即可。完成後在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以傳送給他人。 Windows的目錄在c盤的使用者目錄內。

3.上傳ssh公鑰到碼雲

點選右上角的使用者頭像,選擇設定。然後在設定頁面的左側功能欄選擇SSH公鑰。將剛才生成的id_rsd.pub的內容拷貝進公鑰內容框內,標題隨意填寫。 4.建立專案倉庫 點選頁面右上角的加號,並選擇新建倉庫。 04 本地提交程式碼與推送遠端庫 1.新增遠端地址
  1. <font face="Tahoma"><font color="black">
  2. git remote add origin ssh地址
  3. 如 git remote add origin [email protected]:xxxx/xxxx.git</font></font>
複製程式碼 ssh地址在gitee倉庫頁面點選“克隆/下載”按鈕獲取。 可以通過 git remote -v指令檢視遠端的連線。
  1. <font face="Tahoma"><font color="black">
  2. $ git remote -v
  3. origin[email protected]:xxxx/PROJECTTEST.git (fetch)
  4. origin[email protected]:xxxx/PROJECTTEST.git (push)</font></font>
複製程式碼 2.拉取遠端版本到本地
  1. <font face="Tahoma"><font color="black">
  2. git pull origin master
  3. $ git pull origin master
  4. remote: Enumerating objects: 4, done.
  5. remote: Counting objects: 100% (4/4), done.
  6. remote: Compressing objects: 100% (4/4), done.
  7. remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
  8. Unpacking objects: 100% (4/4), done.
  9. From gitee.com:xxxx/PROJECTTEST
  10. * branch master -> FETCH_HEAD
  11. * [new branch] master -> origin/master</font></font>
複製程式碼 拉取成功後,本地目錄可以看到剛才建立gitee倉庫時建立的Readme檔案。 3.本地提交程式碼 將project內原有的程式碼,inc/ src/目提交到本地倉庫。
  1. git add src/
  2. git add inc/
  3. git commit -m “first commit”
複製程式碼 注意不要講編譯生成的檔案add進去,只將程式碼add進倉庫。因為編譯生成的檔案每次編譯都會變化,這樣每次的版本提交都包含了這些非程式碼改變的提交,不僅會使得版本很混亂也會佔用很多遠端倉庫的空間。當然這也可以通過增加gitignore檔案的方法來處理。 4.推送本地倉庫到遠端
  1. <font face="Tahoma"><font color="black">
  2. git push origin master
  3. $ git push origin master
  4. Enumerating objects: 32, done.
  5. Counting objects: 100% (32/32), done.
  6. Delta compression using up to 8 threads
  7. Compressing objects: 100% (31/31), done.
  8. Writing objects: 100% (31/31), 22.22 KiB | 2.78 MiB/s, done.
  9. Total 31 (delta 12), reused 0 (delta 0)
  10. remote: Powered by GITEE.COM [GNK-5.0]
  11. To gitee.com:xxxx/PROJECTTEST.git
  12. 4d112e2..ebaf8bdmaster -> master</font></font>
複製程式碼 直接git push會提示警告
  1. $ git push
  2. fatal: The current branch mater has no upstream branch.
  3. To push the current branch and set the remote as upstream, use
  4. git push --set-upstream origin master
複製程式碼 按照提示執行git push --set-upstream origin master,以後再推送版本,只需要輸入git push就可以了。 至此,將一個現有的keil工程加入git管理,並在遠端託管平臺備份的操作都完成了,後面在這個工程上做開發並提交版本,就按照常規的git操作 git add、git commit、git push就可以了。本文開始提出的版本回退問題,只需要執行git reset –hard的指令,程式碼就自動回退到指定的提交點了。更多的git功能,開發者可以在後續的實際開發中不斷學習完善。