本人以前使用版本控制都是最简单的方法,阶段性的包一个压缩包并且命名v0.0.1,诸如此类。keil据观察是对git支持不太好,故研究大名鼎鼎GIT使用方法。
当我看到这个命令时git status
我就知道github,还有另一个hub为什么威名远扬!
设置GIT
- 禁止行尾自动转换
.uvprojx和.uvoptx项目文件的每行以换行符(LF)
结尾(UNIX风格),而在Windows系统中,文件的每行通常使用回车换行符(CRLF)
结尾。Git会自动检测这一点,并将服务器上的行尾改为CRLF。这样会出现不一致,可以使用以下命令禁止Git自动修改行尾。
git config --global core.autocrlf false
- 设置用户信息
安装完Git之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改。
//设置提交代码时的用户信息
git config --global user.name "[name]" //例如:git config --global user.name "my_name"
git config --global user.email "[email address]" //例如:git config --global user.email "my_email@xxx.com"
user
为你的用户名,email
为你的邮箱
--global
参数表明你这台机器上所有的仓库都进行相同的配置。如果使用了--global
选项,那么该命令只需要运行一次
- 设置文本编辑器
$ git config --global core.editor "'C:/ProgramFiles/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
其中,Notepad++的安装路径以自己的电脑为准。
为什么需要这一步:
注意:
千万不要使用Windows自带的__记事本__编辑任何文本文件。Microsoft开发记事本的团队使用> 了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费! —摘自廖雪峰的Git教程
注册Gitee
注册Gitee,并且创造一个仓库。
- 创建SSH秘钥(key)
在git命令行界面中输入:
ssh-keygen -t rsa -C "email"
此时,C:\Users\Administrator.ssh目录下会生成两个文件:id_rsa
和id_rsa.pub
,把id_rsa.pub文件中的内容复制下来。 - 设置远程仓库SSH秘钥
打开你的Gitee主页,点击账户__设置-安全设置-SSH公钥__,把刚才复制的ssh 秘钥粘贴到公钥输入框中。
获取GIT仓库
通常有两种获取 Git 项目仓库的方式:
- 将尚未进行版本控制的本地目录转换为 Git 仓库;
- 从其它服务器克隆 一个已存在的 Git 仓库。
两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。
但是我们嵌入式一般都是生成出来的工程或者使用某种模板,例如:STM32CUBEMX之类的
所以说大概率我们会使用第一种方式1.
- 在已存在目录中初始化仓库
然后执行
git init
该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。
追踪文件
通常我们的keil会存在很多.o,.d或者很多临时文件,记不记得正点原子里有一个bat文件就是用来清除这些文件达到给整个工程瘦身的原理。
当然我们并不希望这些文件被追踪,因为他们大部分生成出来的与我们想追踪的代码并不一样。
忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore
的文件,列出要忽略的文件的模式。
这里我直接再CSDN里找到不错的配置,当然你也可以自己根据需要来更改。
# Keil Generated output files in the sub-directories .\Listings and .\Objects
*.lst
*.o
*.d
*.crf
*.lnp
*.axf
*.htm
*.build_log.htm
*.dep
*.iex
*.i
*_2i
*.l2p
*.fed
*.map
*.hex
*.bin
*.Bak
#Keil Project screen layout file
*.uvguix.*
*.uvgui.*
#JLINK file
JLinkLog.txt
*.dbgconf
更改他并不难,可以根据权威网站来研究git-book
添加追踪文件
接下来开始添加我们需要追踪的文件,我们可以一个一个的添加,这在后面有新的库或者文件时可以用的上,现在我们把文件全部的添加上。
- 添加一个或多个文件到暂存区:
git add [file1] [file2] ...
- 添加指定目录到暂存区,包括子目录:
git add [dir]
- 添加当前目录下的所有文件到暂存区:
git add .
我们通常用最后一个来添加所有该添加的文件。
添加远程仓库
- 在Gitee的空白仓库(不使用Gitee提供的任何模板文件,否则推送的时候会因为服务器中有本地没有的文件而报错,为处理这个错误要多出许多步骤来),复制远程仓库地址,在Git命令行中关联远程仓库:
//git remote add origin https://gitee.com/用户名/仓库名.git
git remote add [shortname] [url]
这里[shortname]
是远程仓库的简写,一般都使用origin
。
提交暂存区到本地仓库中
- 将暂存区内容添加到本地仓库中:
git commit -m [message]
[message]
可以是一些备注信息。
当然也有命令可以把提交暂存区和添加文件合并起来,不需要执行git add
git commit -a
当然也可以使用git commit -am ""
这样的命令,但是这个命令只会添加已经追踪过的文件。
最后一步
将本地仓库推送到远程仓库
//将本地分支推送到远程主机,
//git push -u origin master 第一次推送使用-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
//git push origin master 非第一次提交
git push [remote] [branch]
其中[remote]
为远程仓库的名字,在添加远程仓库小节中,已经将远程仓库命名为origin
;[branch]
为本地仓库名字,默认为master
。
总结
自此我们完成了命令行的全部配置,但是并没有介绍从远程仓库克隆等命令,还需要我更加了解下。
后续可能要用到图形化的git,TortoiseGit。
本章大部分借鉴文章
总的来说一般都是先创建文件夹,然后
-
git init
再添加keil文件,readme,.gitignore等您需要的文件,然后追踪需要的文件 -
git add .
添加远程仓库 -
git remote add [shortname] [url]
提交到本地仓库
git commit -am "添加您需要的备注信息"
将本地仓库推送到远程仓库
git push [remote] [branch]
以上这几步
当然如果说提交某个错误的版本或者说想退回某个版本
- 查看提交记录的版本号
git log
- 回退到指定版本
git reset --hard 版本号
- 将回退的后版本强推到远程主机。此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧:
git push -f
还有我们常用的命令:
- 查看文件添加删除了那些代码
git diff
- 查看文件状态
git status
- 从远程仓库克隆
git clone git@gitee.com:用户名/仓库名.git