博客專欄

EEPW首頁(yè) > 博客 > 如何使用 git 管理 MDK 工程?

如何使用 git 管理 MDK 工程?

發(fā)布人:魚(yú)鷹談單片機(jī) 時(shí)間:2021-10-21 來(lái)源:工程師 發(fā)布文章

很多初學(xué)者都不會(huì)使用 git 管理工程,一來(lái)不熟悉這個(gè)工具,二來(lái)不知道使用 git 有什么好處,增加學(xué)習(xí)成本,當(dāng)初魚(yú)鷹在大學(xué)的時(shí)候就有了解過(guò) git 這個(gè)分布式管理工具,但真正用它管理工程還是在工作一年之后才開(kāi)始的。

那個(gè)時(shí)候不知道 git 到底有多香,所以也不會(huì)想要真正使用它,最多就是從 github 上下載一些開(kāi)源項(xiàng)目學(xué)習(xí)而已。直到跳槽的那個(gè)公司使用 git 去管理 STM32 工程,然后到現(xiàn)在差不多使用了兩年的時(shí)間,才知道到 git 到底有多香了。

所以即使工作上沒(méi)有要求使用 git 管理工程,也建議大家自行使用 git 去管理自己的項(xiàng)目。因?yàn)槿绻皇亲约菏褂玫脑挘遣恍枰罱?gitlab 之類的服務(wù)器,直接安裝好客戶端在本地管理即可,也不怕上傳公司項(xiàng)目到 github、gitee 服務(wù)器上而導(dǎo)致項(xiàng)目泄密的問(wèn)題。

所以,強(qiáng)烈建議大家使用 git ,除了今天這篇筆記,魚(yú)鷹接下來(lái)還會(huì)介紹一些非常常用的命令來(lái)幫助大家快速入手 git。

閑話少說(shuō),我們先看看 git 的幾個(gè)優(yōu)點(diǎn),讓各位道友產(chǎn)生些許興趣。

1、可以查看每一次提交歷史。

這些提交記錄其實(shí)是你自己寫(xiě)的,每一次修改后,為了記錄這次修改,自己寫(xiě)一點(diǎn)類似注釋的東西,告訴 git 這次做了什么修改,方便后面出現(xiàn)問(wèn)題追溯。

2、可以對(duì)比修改 

可以對(duì)比每次修改的地方,這樣你可以知道為什么當(dāng)前代碼出現(xiàn)了問(wèn)題,而以前代碼沒(méi)有問(wèn)題。

3、可以對(duì)比當(dāng)前修改 

當(dāng)你修改了當(dāng)前的代碼時(shí),可以告訴你目前做了哪些修改,這樣你可以確定是否需要將這些修改保存提交。

4、無(wú)縫銜接 VSCODE 

可以使用 VSCode 輕松對(duì)比查看修改。

1.png

這些優(yōu)點(diǎn)干巴巴的這樣寫(xiě)還是比較枯燥的,所以魚(yú)鷹會(huì)再下一篇筆記中結(jié)合命令和實(shí)際項(xiàng)目情況詳細(xì)介紹。這次就不多說(shuō)了。

直接進(jìn)入本篇筆記的主題:如何使用 git 管理 MDK 工程?

MDK 工程有兩個(gè)很關(guān)鍵的文件,即后綴 .uvoptx 、.uvprojx。所以你的倉(cāng)庫(kù)中必定需要使用 add 命令添加這兩個(gè)文件。

2.png

其次就是你的 *.h *.c 文件,這些也必須添加(這不是廢話嗎,不然倉(cāng)庫(kù)放啥)。當(dāng)然如果這些源文件使用了文件夾包含,也會(huì)把這些文件夾添加進(jìn)去的(新建的文件夾只會(huì)在 git status 時(shí)顯示文件夾,不顯示文件夾內(nèi)的具體文件,而如果是空文件夾,文件夾也不會(huì)顯示,所以你無(wú)法添加一個(gè)空文件夾。文件夾添加只是順帶的)。

工程里面的其他文件都是不需要的,都是可以由這些文件自動(dòng)生成,可以不被 git 所追蹤(管理)。這樣你上傳到服務(wù)器的空間將大大減小。

比如,Objects 里面的文件,這些都是編譯時(shí)自動(dòng)生成的,不必占用空間。

3.png

還有 listings 里面的文件也不需要。

4.png

當(dāng)然,如果說(shuō)你的分散加載文件 *.sct (Objects 文件夾下)比較特殊,不想使用上面工程文件生成的,那么你也要添加進(jìn)倉(cāng)庫(kù)里面管理,這樣別人下載你的工程后才能根據(jù)這個(gè)文件正確編譯(比如自檢代碼時(shí)就要特制 sct 文件)。

使用 jlink 下載時(shí),會(huì)生成兩個(gè)文件:

5.png

這兩個(gè)文件沒(méi)啥用,就不用添加了,也可以自己生成。如果你有批處理文件,比如刪除中間文件的批處理,那么也可以添加進(jìn)倉(cāng)庫(kù)。

6.png

如果你使用了 MDK 的 *.ini 文件,那么這個(gè)也需要。這個(gè)可不是自動(dòng)生成的。比如 RAM 運(yùn)行時(shí)用的配置文件。

7.png

你的工程可能使用 readme.txt ,那么這個(gè)也需要添加??傊粋€(gè)原則是,只保留必須的,可以自動(dòng)生成的非特殊文件都可以不添加進(jìn)倉(cāng)庫(kù)占用空間。

那么如何保證 git 忽略那些不需要的文件呢?

其實(shí)你只要 add 你需要的文件就可以了,但這樣一來(lái),git 會(huì)一直提示你有哪些文件并沒(méi)有添加到倉(cāng)庫(kù)中,問(wèn)你是否需要添加進(jìn)去,這樣就很煩,所以就有一個(gè) .gitignore 文件用來(lái)忽略這些不希望跟蹤的文件。

8.png

特別注意的是,這個(gè)文件很特殊,它的后綴就是 .gitignore ,不是你認(rèn)為的 txt 之類的后綴,而且沒(méi)有文件名。所以如果說(shuō)你新建了這個(gè)文件,又添加了忽略文件,但是 git status 還是顯示了這些文件,那么就要好好檢查你這個(gè)文件名是否正確了(只要有這個(gè)文件,立即生效)。當(dāng)然你也要把它 add 進(jìn)倉(cāng)庫(kù),不然別人下載后就沒(méi)有這個(gè)文件了,也就無(wú)法忽略那些文件。

那么這個(gè)文件可以添加什么內(nèi)容呢?如下:

##########################################
#git add .
#git commit -m 'update .gitignore'
##########################################
!debug.ini  # 該文件不忽略
*.ini
JLinkLog.txt
Listings
DebugConfig
Objects
.vscode
*.uvguix.*
*.si4project
SI
*.TMP
*.hex
*.map
*.lnp
*.htm
*.sct
ExtDll.iex

這里加一個(gè) ! 代表這個(gè) debug.ini 文件不忽略,而后面的 .ini 表示所有這類后綴文件都會(huì)被忽略。也就是說(shuō),.ini 文件里面只有 debug.ini 不能忽略,其它都忽略,比如前面的 RAM.ini。

Objects 代表這個(gè)文件夾內(nèi)所有文件都忽略。

后面都是類似的。

還有要注意的是,如果你忽略的文件前沒(méi)有加路徑,那么它將忽略本目錄和子目錄下所有的同后綴名文件。而一旦加了路徑,比如 USER/*.txt(注意必須是斜桿),那么只會(huì)忽略這個(gè)目錄 USER 下的同后綴文件(不忽略子文件夾下的)。

以上就是魚(yú)鷹想分享的 MDK 管理內(nèi)容,建議大家嘗試 git 管理項(xiàng)目,別再用復(fù)制文件夾這種效率低下的方式管理了。而當(dāng)你需要維護(hù)多個(gè)定制化的客戶項(xiàng)目時(shí)(大部分功能相同,只有少部分有差異的項(xiàng)目),你就會(huì)發(fā)現(xiàn) git 是真的香。

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

接地電阻相關(guān)文章:接地電阻測(cè)試方法


加速度計(jì)相關(guān)文章:加速度計(jì)原理


關(guān)鍵詞: 單片機(jī)

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉