git命令参考
git命令参考
前言
在版本管理中,我们常用到git或者svn去管理我们的代码。
因为嵌入式开发经常要用到Linux环境做开发,所以懂得一定的git命令对我们进行开发过程中的版本管理非常重要
创建仓库
如果想将代码加入到版本管理,首先要有一个仓库。
所以第一步操作是创建仓库
例如说要创建一个名为simple的空仓库
git init --bare sample.git
其中--bare表示创建一个空仓库,即什么都没有的仓库。
修改仓库权限
sudo chmod -R git:git sample.git
这样,就将仓库的权限给了git组下面的git用户。
克隆(clone)仓库
那么有了仓库之后,我们需要将仓库拉到本地,命令如下
git clone sample.git
会创建一个sample的文件夹,对仓库内容的操作需要在sample文件夹内进行
修改代码、对比修改和提交
修改代码
这里我们编辑一个main.c的文件vim main.c并写入内容
对比修改
修改完成后,查看仓库状态
** 查看仓库状态 **
git status
如果说只要查看当前文件夹下的状态,使用
git status .
这个命令可以看到文件有改动但是并不知道具体的改动
这个时候我们可以使用diff对比修改
git diff <filename>
<filename>表示具体的文件名,例如main.c
添加
那么确认好修改无误后,我们可以添加这个文件到暂存区
使用以下命令
git add <filename>
添加多个文件的时候,我们可以用空格分隔开,例如:
git add <filename1> <filename2>
我们也可以用--update选项,表示只添加有修改的文件(但是这个要注意它只会关注原本存在这个仓库的文件,例如说你是新文件,上个版本没有,那么不适用这种情况)
git add --update
我们还可以用add .来添加当前文件夹的所有文件
git add .
撤销某个文件的add
撤销add可以用reset,例如
#1.8.2 版本之后
git reset <file>
#旧版
git reset HEAD <file>
但是,这种撤销只能用于撤销文件add但没有commit的情况,如果commit了,那么建议还是回退
提交到本地仓库(commit)
commit这个单词有承诺,承认的意思,在这里不太好翻译,这里用commit来称呼
添加(add)完成后,代码会被添加到暂存区
这时候可以将它提交到本地仓库
git commit -m "创建初始版本"
"创建初始版本“,这句话可以对这个版本进行一个基本的注释
撤销commit
commit注释错了,或者发现代码还有要修改的地方,如果这个时候没有推送到远程仓库的话,可以撤销commit
撤销可以使用
- 使用参数
--mixed(默认参数),如
git reset --mixed <commit ID>或git reset <commit ID>
撤销git commit,撤销git add,保留编辑器改动代码
- 使用参数
--soft,如
git reset --soft<commit ID>
撤销git commit,不撤销git add,保留编辑器改动代码
- 使用参数
--hard,如
git reset --hard <commit ID>
此方式非常暴力,全部撤销,慎用
撤销git commit,撤销git add,删除编辑器改动代码
注:(撤销commit这段参考自这里)
commit注释标识规范
在commit的时候,如果没有一些标识,那么重新查看旧版本的时候容易找不到,经常不知道一段代码是做什么的,哪个版本做出的修改才是比较重要的,要回退的话,需要回退到哪个稳定版本?
所以我们要有commit的标识
提交包括三个字段:type(必需)、secope(可选)和subject(必需)
type
必须为下列之一:
- feat 新功能(feature)
- fix 修补(fix bug)
- docs 文档修改
- style 不影响代码含义的修改(例如:white-space;格式化等)
- refactor 重构(即不是新增功能,也不是修改bug的代码变动)
- perf 提升性能的修改
- test 增加或修改测试
- chore 构建流程或辅助工具的修改
scope
scope用于说明commit修改的范围,比如数据层、控制层、视图层;route, component, utils, build等等。
如果修改影响多处,可使用 *;
subject
subject是对修改的简要说明
使用祈使句,一般现在时。
首字母小写
句末不要使用句号
示例
//(1) 提交一点点修改
[fix][view]修改登录界面错乱问题
//(2) 多点修改,每个修改需要换行
[fix][view]修复用户登录界面逻辑错乱问题
[feat][network]增加网络重连机制
[perf]提升页面加载速度,主要在离线缓存这块
推送到远程仓库(push)
使用push命令
git push
如果你的仓库有多分支管理,使用
git push origin <branchname>
表示分支名,例如master、dev
从远程仓库拉取最新代码(pull)
一般规模稍微大一点的项目都离不开团队合作,这个时候就会需要用到拉取别人的代码
使用pull
git pull
当有多分支时,同push
git pull origin <branchname>
#或者
git checkout <branchname>
git pull
版本回退
文件回退
例如说,有一个文件,我临时验证某个功能,所以修改了那个文件。但是验证完了之后我想用回仓库里面的代码
就可以使用
git checkout <filename>
这个会直接撤销所有的修改,checkout之前请确保你不会再用到它,否则还是先拷贝一份副本
cp <filename> <filename>.bak
git checkout <filename>
commit回退
首先我们要查看我们需要回退的版本的commit id
每一个版本都会生成一个commit id号
查看提交历史日志
git log
#或者
git log --oneline --decorate --graph
知道了需要回退的版本的commit id之后,使用checkout回退版本
git checkout <commitid>
回到最新版本
可以使用
git checkout master
这样就可以回到最新版本了,但是如果有文件修改导致冲突的话,会回退失败
这个时候使用上面的git checkout <filename>将所有有修改的文件恢复到原来的状态。
所有文件恢复后,再使用上面的checkout master即可
标签管理
除了commit id进行代码管理之外,git还提供了标签功能,可以给一些稳定的版本打上标签,形成版本号
标签的操作命令内容如下:
其中[tagname]表示标签的名称,例如:
v1.1.0
- 添加标签
git tag [tagname]
- 推送单个标签
git push origin [tagname]
- 推送所有标签
git push --tags
- 获取最后一个添加的标签
git describe --abbrev=0 --tags
- 删除一个标签
git tag -d [tagname]
git命令参考的更多相关文章
- Git命令参考手册(文本版)
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...
- Git命令参考手册(转)
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...
- git 命令参考手册 git中文命令参考手册大全
git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global ...
- Git命令参考手册
git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...
- [转帖]git命令参考手册
git init # 初始化本地git仓库(创建新仓库) git ...
- git 命令参考手册
你的本地仓库由 git 维护的三棵“树”组成.第一个是你的 工作目录,它持有实际文件:第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动:最后是 HEAD,指向你最近一次提交后的结果. ...
- Git命令速查表【转】
本文转载自:http://www.cnblogs.com/kenshinobiy/p/4543976.html 一. Git 常用命令速查 git branch 查看本地所有分支git status ...
- Git 命令及使用经验
手册中的基本命令: CONFIGURE TOOLING Configure user information for all local repositories $ git config --glo ...
- Git常用命令参考手册
配置 # 查看全局配置列表 git config -l # 查看局部配置列表 git config --local --list # 查看已设置的全局用户名/邮箱 git config --globa ...
- 【GIT】使用Git命令窗口将本地工程提交至远程GitHub
目标: 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub. 2.方便园友的同时也方便自己以后解决此类问题. 步骤: 1.首先登陆GitHub网站https://github.com/ ...
随机推荐
- ZCMU-1179
我的错误: 明知道是大数问题但不是不想写数组或者字符串的结构. 思路 网上查阅后发现可以使用JAVA的大数类型做. 若不使用JAVA则就是整型数组或者字符串的情况. 将a^b结果放在数组当中,实时更新 ...
- 移动端NES网页模拟器(1)
前言 移动端浏览器是没有实体键盘的,想要操作游戏就必须为其设置虚拟按键,通过虚拟按键(按钮)的标识与实体键盘的keyCode进行绑定,来达到想要的效果. 这个随笔只封装NES游戏手柄右边的按键,不包含 ...
- Java日志记录几种实现方案
在平时使用到一些软件中,比如某宝或者某书,通过记录用户的行为来构建和分析用户的行为数据,同时也能更好优化产品设计和提升用户体验.比如在一个订单系统中,需要确定追踪用户的行为,比如: 登录/登出 浏览商 ...
- 中电资讯 - 一路“标”升,喜迎Q3开门红
Q2收获满满,Q3精彩再启! 近日,中电金信多项业务取得新进展 接连中标多个项目 中电金信数字科技集团旗下优智汇咨询中标浙江民泰商业银行信息科技战略发展规划(2022-2025)项目.优智汇将根据民泰 ...
- 【数据库】MongoDB服务启动失败的问题。
1.确保MongoDB所在文件夹拥有所有权限 2.确保打开CMD窗口是以管理员身份运行的 3.配置文件中的路径应该为完整路径,且不包含空格和特殊字符(不建议包含) systemLog: destina ...
- 【MyBatis】学习笔记07:模糊查询
[Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...
- Qt开发经验小技巧206-210
有时候需要对文本进行分散对齐显示,相当于无论文字多少,尽可能占满整个空间平摊占位宽度,但是在对支持对齐方式的控件比如QLabel调用 setAlignment(Qt::AlignJustify | Q ...
- Qt数据库应用16-通用数据库采集
一.前言 数据库采集对应的就是上一篇文章的数据库同步,数据库同步到云端数据库以后,app.网页.小程序啥的要数据的话,可以通过执行http请求拿到数据,http接收应答这边程序一般最简单可以用php写 ...
- 15条 Karpenter 最佳实践,轻松掌握弹性伸缩
Karpenter 是一款高性能.灵活的开源 Kubernetes 集群自动扩展工具,目前已支持 AWS 和阿里云.它可以根据不断变化的应用负载,快速启动大小合适的计算资源,进而提升应用的可用性. 相 ...
- [转]在Eclipse整合Maven3.6.3插件导入maven项目并编译时,控制台提示No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
近日有同事遇到在编译Maven项目时出现[ERROR] No compiler is provided in this environment. Perhaps you are running on ...