EEDrone开源四旋翼从零开始(5)--git基础
注册和环境搭建
先注册github.com的账号,官方网站: https://github.com/
需要一个邮箱,同时也要一个昵称,我的是flyloong,之后会用到。
下载git,地址:https://git-scm.com/downloads
安装时直接next到最后。
配置git
任意目录下右击,选择“Git Bash Here”,会弹出窗口,
1) 先输入如下,,注意ssh-keygen之间是没有空格的,其他的之间是有空格的
ssh-keygen –t rsa –C “邮箱地址”
复制代码
2) 回车之后,会出现一行,让你输入一个保存密钥的地方,括号里面是它默认的位置,这里会让你输入几次内容,都不用输入,直接回车就可以了,可以看到如图的效果:
3) 回车之后,这样密钥就生成了,可以用记事本打开id_rsa.pub,然后全部复制,网站上去配置一下ssh key,点击箭头指示的三角图标,选择Settings,然后点击左侧的SSH Keys,之后点击右侧的Add SSH Key,这样就会出现添加SSH Key的界面,在Title这一栏填一个名字,名字随意起,之后打开刚才生成的那个文件id_rsa.pub,全选复制里面的内容到Key这一栏中,点击Add Key按钮完成操作,这时你填的邮箱会收到一封确认的邮件,不用管它。
4) 验证一下是否设置成功,在git bash下输入如下命令:
ssh –T git@github.com
复制代码
如果你是第一次,会让你输入yes或no,这时输入yes就可以了,其它显示就和我这个是一样的。如果你的是出现不是这些内容,有可能是显示权限问题什么的,就应该是我上面提到的那种情况,你看一下你生成密钥时是否操作正确,目录下是否有那个known_hosts这个文件。
5) 现在配置一下用户名和邮箱:
git config –global user.name “用户名”
git config –global user.email “邮箱”
复制代码
到现在为止,我们就算把Git和github配置完了,现在就来托管我们的项目吧。
项目托管
回到github网页,点击New repository按钮,弹出如下界面,第一行填仓库名,就叫个text,第二行是对这个仓库的描述,之后那个Public就是公共仓库的意思,接下来的README就是在仓库里创建一个README文件,可以往里写一些介绍你这个项目的功能之类的东西,再下面那个Add gitignore按钮,可以选择你这个项目是用什么语言之类的,后面那个License是用来说明该项目遵从什么开源协议,例如我们的EEDrone遵从BSD3,选择后会在更目录下生成一个LICENSE文件,最后点击“Create repository”
然后到需要托管的项目中去,例如项目文件如下:
这里最重要的一件事就是添加”.gitignore”文件,整个有几百兆,其中大部分是IDE生成的编译中间文件,这些并没有用,每次编译都会重新生成,可以在IDE里面清除,或者写一个批处理文件清除,都没有添加忽略文件来的方便,直接用文本文件新建一个就好,内容如下:
EWARM/**
!*.icf
!*.eww
!*.ewp
!*.ewd
!*.s
MDK-ARM/**
!*.uvoptx
!*.uvprojx
!*.s
SW4STM32/EEDrone/**
!*.cproject
!*.project
!*.xml
!*.ld
SI/
复制代码
相关的语法可以参考:https://www.kernel.org/pub/software/scm/git/docs/gitignore.html
举例说明如下:
“EWARM/**”这句话的意思是将EWARM文件夹下的内容除需要保留的全部删掉,但是保留该文件夹
“!*.icf“这是EWARM文件夹下将后缀为icf的全部保留
“SI/”是将整个SI文件夹全部删掉
如果大家是使用IAR工程就使用上面的几句代码就好,Keil就选用中间的
写好保存后右击选择“Git Bash Here”
1) 输入 git init,来完成初始化工作。这时候会自动生产一个隐藏文件夹”.git”
git init
复制代码
2) 增加对我们github上创建的test仓库的管理。其中origin是一个名字相当于一个宏定义,可以任意取, flyloong是我在网站上注册时使用的用户名,test.git是我为这个项目建立的仓库名。
git remote add origin git@github.com: flyloong/test.git
复制代码
3) 由于我建立仓库的时候创建README.md之时,已经算一次提交了,我需要先在本地同步一下仓库的内容。本地就会多一个README.md文件。
git pull origin master
复制代码
或者git pull git@github.com: flyloong/test.git
效果如下:
此时可以修改代码或者直接上传代码。
4) 下面就要把我刚创建的文件上传到到仓库上去了,首先执行增加命令,如下:
git add . (这后面是一个英文的句号)
复制代码
add后面加了一个点,是想要提交所有文件,如果想提交指定的文件,可以写文件名。
5)执行完增加命令后,要执行提交命令,如下:
git commit –m “这里写下你自己的记录本次提交内容的信息”
复制代码
-m后面跟提示信息,这个提示信息是一定要写的,不仅是规则,同时也方便我们记录我们提交的过程,写清晰为什么提交或修改了什么是非常有用的。
6)提交完成后,我们就要把它推送到远程仓库上去了,命令如下:
git push origin master
复制代码
这样就完成了我们要做的所有任务
之后可以继续修改代码,那么只需要执行最后面三步就可以了:
git add .
git commit –m “这里写下你自己的记录本次提交内容的信息”
git push origin master
复制代码
如果有新的版本发布,又想要留着之前的版本,那么就可以添加tag标签了,如下:
git tag V0.01
复制代码
其中V0.01是标签名
上传到网上仓库
git push origin –tags
复制代码
在github网站上就有了标签了如下:
协同工作
如果想要多人同时开发,例如有账号”lb8820265”想来共同开发,步骤如下:
1) Fork,
2) Clone
在需要下载的地方如下输入如下指令:
git clone https://github.com/flyloong/test.git
复制代码
3) 修改上传
参考上面,这里就将readme.md里面的test改成test2。
4) 在”lb8820265”用户中点击”Pull requests”:
5) 在下方可以查看本次的修改,点击”Greate pull request”
6) 添加说明:
也可以不写,点击”Greate pullrequest”
7) 同意合并
flyloong会有提醒如下:
点击弹出如下:
点击”Merge pull request”就可以合并修改了,点击Fileschanged可以查看修改的内容:
这样就完成了协调开发了。这是从个人的仓库中fork,通常开源项目是放在github组织上的,例如我们的EEDrone项目,地址是:https://github.com/eedrone,这样就可以有多个管理员,都可以允许合并操作,其他的操作类似。
其他常用指令
列出remote: git remote (在后面添加-v显示显示地址)
删除remote: git remote rm 取的名字
在本地新建一个分支: git branch Branch1
切换到你的:新分支: git,checkout ,Branch1
将新分支发布在github上: git pushorigin Branch1
在本地删除一个分支: git branch -d Branch1
在github远程端删除一个分支:git push origin :Branch1 (分支名前的冒号代表删除)
删除错误提交的commit:
gitreset --hard <commit_id>
git push<origin> HEAD --force
其中commit_id是ID号,可以通过git log看到只要输入前面6个就可以,origin是名字
获取commit列表: git log
git的官方文档:https://git-scm.com/doc