经过几天突击式扫盲,对git的基本原理算是更清楚了。看来大牛们用命令来操作还是有道理的,这样思路更清楚!不再受限于smartgit的操作混淆了。如何将git用到真正的项目中呢?结合rt-thread官方仓库看下吧。
1、先克隆下rt-thread官方在gitee上的仓库文件。
2、查看版本 git log --graph --pretty=oneline --abbrev-commit,得十几页日志。到end,何退回到命令行呢?按q,详见扩展git log解析:
3、rt-thread,使用了.gitignore了吗?
使用
磁盘符: 跑到cdefg等盘的根目录下
cd \一级路径\二级路径.... 一次进入多级目录
cls 清屏命令
exit 退出命令
dir 查看当前目录或内容
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd \或cd ~ 返回home目录
cd - 目录名 返回指定目录
分别查看rt-thread目录下文件,如下图:
是这样,这些文件其实就添加一次就可以了,以后基本也不会再改动。但对于具体工程的日志,临时文件,编译的中间文件等,就使用了.gittignore文件。
详见:扩展:git忽略解析
4、总结:
通过对rt-thread仓库的结构,可以看到git不止对只需要修改的项目文件可以提交,对于整个可以复用的工程文件都是可以提交的,各自的配置文件要结合.gitignore文件来忽略中间文件。
扩展:
git忽略解析:
gitignore使用场景:
在你使用git add .的时候,遇到了把你不想提交的文件也添加到了缓存中去的情况,比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中,但是又为了偷懒每次添加缓存的时候都想用git add .而不是手动一个一个文件添加,该怎么办呢?.gitignore文件只要在这个文件中申明那些文件你不希望添加到git中去,这样当你使用git add .的时候这些文件就会被自动忽略掉。
gitignore使用:
首先,在你的工作区新建一个名称为.gitignore的文件。然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。
1 2 3 4 |
|
.gitignore注释用'#', *表示匹配0个或多个任意字符,所以上面的模式就是要忽略所有的xml文件,log文件和apk文件。
gitignore忽略语法:
多数情况下:不用重新写.gitignore文件github官网提供了模板只要组合使用就可以了,参见官网:https://github.com/github/gitignore/blob/master/C.gitignore
可以看到每个目录下的.gitignore文件相似度还是挺高的,只要以官网gitignore文件为基础再加上些要忽略的文件夹就可以了。当然也可以使用https://www.toptal.com/developers/gitignore,输入c或其他语言自动生成.gitignore文件。
.gitignore忽略规则简单说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
温馨提示:
如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。简单来说出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一单push,处理起来会非常麻烦。
若没有达到预期想要的过滤效果,可使用:git check-ignore -v +出错的文件:看出错文件有没有忽略的问题:如下:
说明kconfig在ignore文件中没有错误。
还有种情况是:git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。
git log解析:参考https://www.bookstack.cn/read/git-tutorial/docs-commands-git-log.md
格式:git log [<options>] [<since>..<until>] [[--] <path>...]
一、不带参数
- 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者、提交日期、和提交说明
- 如果记录过多,则按Page Up、Page Down、↓、↑来控制显示
- 按q退出历史记录列表
二、显示参数
# 列出当前分支的版本历史
$ git log
# 列出某个文件的版本历史,包括文件改名
$ git log --follow [file]
#查看远程分支的变动情况。
$ git log remote/branch
#查找log,即搜索commit信息。
$ git log --author=Andy
$ git log -i --grep="Something in the message"
上面代码中,-i
参数表示搜索时忽略大小写。
#查看某个范围内的commit
$ git log origin/master..new
# [old]..[new] - everything you haven't pushed yet
#美化输出
$ git log --graph --decorate --pretty=oneline --abbrev-commit
- —graph commit之间将展示连线
- —decorate 显示commit里面的分支
- —pretty=oneline 只显示commit信息的标题
- —abbrev-commit 只显示commit SHA1的前7位