本文转载自微信公众号《Osprey谈MCU》,作者Osprey鱼鹰。转载本文请联系Osprey谈MCU公众号。很多初学者不知道如何使用git来管理项目。首先,他们不熟悉这个工具。二是不知道使用git的好处,增加了学习成本。Osprey在大学的时候就知道git这个分布式管理工具,但是真正开始用它来管理项目是在工作了一年之后。那时候还不知道git有多香,所以也不太想用。顶多只是从github上下载了一些开源项目来学习。直到跳槽的公司用git来管理STM32项目,用了快两年到现在,才知道git有多香。所以即使工作中没有要求使用git来管理项目,也建议大家使用git来管理自己的项目。因为如果只是自己用的话,不需要像gitlab那样自己搭建服务器,直接安装客户端在本地管理即可,也不怕把公司的项目上传到github或者gitee服务器造成项目泄漏。因此,强烈建议您使用git。除了今天的笔记,Osprey还会介绍一些非常常用的命令,帮助大家快速上手git。废话不多说,下面就来看看git的一些优点吧,让道友们有点兴趣。1.可以查看每次提交的历史记录。这些提交记录其实是你自己写的。每次修改后,为了记录修改,写一些类似注释的东西,告诉git这次做了什么修改,方便后面问题的追溯。2.可以对比修改。你可以对比每一次修改,这样你就可以知道为什么现在的代码有问题,而以前的代码没有问题。3.您可以比较当前的变化。当您修改当前代码时,它可以告诉您到目前为止您做了哪些更改,以便您确定是否需要保存并提交这些更改。4.无缝连接VSCODE可以使用VSCode轻松进行对比、查看和修改。干巴巴地写这些优点比较枯燥,所以Osprey会在下一篇笔记中详细介绍命令和实际项目情况。这次我就不多说了。直接进入本篇笔记的主题:如何使用git管理MDK项目?MDK工程有两个关键文件,后缀为.uvoptx和.uvprojx。所以你必须使用add命令在你的仓库中添加这两个文件。二是你的*.h*.c文件,这些也要加上(这不是废话吗,不然什么都进仓库)。当然,如果这些源文件使用了文件夹包含,这些文件夹也会被添加进去(新建的文件夹只会显示git状态下的文件夹,不会显示文件夹中的具体文件,如果是空文件夹,则folderswon也不会出现,所以你不能添加一个空文件夹。文件夹添加只是偶然的)。项目中的其他文件不需要,可以由这些文件自动生成,不能被git跟踪(管理)。这样你上传到服务器的空间就会大大减少。比如Objects中的文件是编译时自动生成的,不占用空间。列表中也不需要文件。当然,如果你的分散加载文件*.sct(在Objects文件夹下)比较特殊,不想使用上面生成的工程文件,那么你也需要将其添加到仓库中进行管理,这样别人可以根据这个文件下载你的工程正确编译(比如自测代码的时候需要一个特殊的sct文件)。使用jlink下载的时候,会生成两个文件:这两个文件没什么用,不用添加,也可以自己生成。如果您有批处理文件,例如删除中间文件的批处理,您也可以将它们添加到存储库中。如果您使用MDK的*.ini文件,这也是必需的。这不是自动生成的。例如,RAMruntime使用的配置文件。您的项目可能使用readme.txt,因此也需要添加。简而言之,一个原则是只保留必要的、非特殊的、可以自动生成的文件,而不需要将它们添加到仓库中占用空间。那么如何保证git忽略那些不需要的文件呢?其实你只需要添加你需要的文件即可,但是这样一来,git会一直提示你哪些文件还没有添加到仓库,问你是否需要添加,很烦人,所以就有了一个.gitignore文件来忽略这些你不想跟踪的文件。值得注意的是,这个文件很特殊,它的后缀是.gitignore,不是你想的那个txt后缀,而且它没有文件名。所以如果你已经创建了这个文件并添加了被忽略的文件,但是gitstatus仍然显示这些文件,那么你必须检查你的文件名是否正确(只要你有这个文件,它会立即生效)。当然你也得加到仓库里,不然别人下载了这个文件就没有了,那些文件不能忽略。那么这个文件中可以添加哪些内容呢?如下:############################################gitadd。#gitcommit-m'update.gitignore'##########################################!debug.ini#这个文件不忽略*.iniJLinkLog.txtListingsDebugConfigObjects.vscode*.uvguix.**.si4projectSI*.TMP*.hex*.map*.lnp*.htm*.sctExtDll。添加一个!toiex表示不忽略debug.ini文件,后面的.ini表示将忽略所有此类后缀文件。也就是说.ini文件中只有debug.ini不能忽略,其他的都忽略,比如前面的RAM.ini。对象意味着忽略此文件夹中的所有文件。背面是相似的。还需要注意的是,如果忽略文件前不加路径,则会忽略本目录及子目录下所有具有相同后缀的文件。并且一旦添加了路径,比如USER/*.txt(注意一定要是斜杠),那么只会忽略该目录USER下(不是子文件夹下)具有相同后缀的文件。以上就是Osprey想要分享的MDK管理内容。建议大家尝试用git来管理项目,不要再用复制文件夹这样低效的方式来管理项目。而当你需要维护多个定制的客户项目时(大部分功能相同,只有少数项目有差异),你会发现git真香。
