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

撤销可以使用

  1. 使用参数--mixed(默认参数),如
git reset --mixed <commit ID>或git reset <commit ID>

撤销git commit,撤销git add,保留编辑器改动代码

  1. 使用参数--soft,如
git reset --soft<commit ID>

撤销git commit,不撤销git add,保留编辑器改动代码

  1. 使用参数--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

  1. 添加标签
git tag [tagname]
  1. 推送单个标签
git push origin [tagname]
  1. 推送所有标签
git push --tags
  1. 获取最后一个添加的标签
git describe --abbrev=0 --tags
  1. 删除一个标签
git tag -d [tagname]

git命令参考的更多相关文章

  1. Git命令参考手册(文本版)

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  2. Git命令参考手册(转)

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  3. git 命令参考手册 git中文命令参考手册大全

    git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global ...

  4. Git命令参考手册

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  5. [转帖]git命令参考手册

                      git init                                                  # 初始化本地git仓库(创建新仓库) git ...

  6. git 命令参考手册

    你的本地仓库由 git 维护的三棵“树”组成.第一个是你的 工作目录,它持有实际文件:第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动:最后是 HEAD,指向你最近一次提交后的结果. ...

  7. Git命令速查表【转】

    本文转载自:http://www.cnblogs.com/kenshinobiy/p/4543976.html 一. Git 常用命令速查 git branch 查看本地所有分支git status ...

  8. Git 命令及使用经验

    手册中的基本命令: CONFIGURE TOOLING Configure user information for all local repositories $ git config --glo ...

  9. Git常用命令参考手册

    配置 # 查看全局配置列表 git config -l # 查看局部配置列表 git config --local --list # 查看已设置的全局用户名/邮箱 git config --globa ...

  10. 【GIT】使用Git命令窗口将本地工程提交至远程GitHub

    目标: 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub. 2.方便园友的同时也方便自己以后解决此类问题. 步骤: 1.首先登陆GitHub网站https://github.com/ ...

随机推荐

  1. Flutter之GetX之Obs

    Flutter之GetX之Obs 除了之前说过的GetBuilder,GetX还有其他的状态管理方式 一个后缀就可以把一个变量变得可观察,变量每次改变的时候,使用它的小部件就会被更新 var name ...

  2. 零售经营“新赛道” ——基于手机银行APP专区调研的客群精细化运营分析报告

    ​ 随着银行业竞争的不断深入及新客户增量日渐"到顶",各家银行的客群竞争逐渐由"跑马圈地"进入"精耕细作"的新阶段,在客群精准化服务方面不断 ...

  3. 【数据结构】【折半查找法】【二分查找法】Java代码

    public class half { public static int find(int[] nums,int num){ int max=nums.length-1; int min=0; in ...

  4. 利用shell中awk和xargs以及sed将多行多列文本中某一列合并成一行

    一.问题描述最近需要利用Shell将多行多列文本中某一列,通过指定的分隔符合并成一行.假设需要处理的文本如下: 我们主要处理的是,将用户名提取处理,合并成一行,并通过逗号进行分隔.最终的格式如下: & ...

  5. 混合云网络过于复杂?ENS给你全局一张网的极致体验

    本文分享自华为云社区<[华为云Stack][大架光临]第19期:混合云网络过于复杂?ENS给你全局一张网的极致体验>,作者:华为云Stack ENS研发团队. 政企IT的混合形态 经过几十 ...

  6. [转]快速搭建简单的LBS程序——地图服务

    很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...

  7. [转]来,让我们一起来盘盘 Nodejs 环境变量(process.env)

    首先 process.env 是什么? node环境变量: process 是node的全局变量,类似浏览器的window: env 是process的一个属性. 官方解释:process 对象是一个 ...

  8. [转]基于vue-router的matched实现面包屑功能

    原文链接:基于vue-router的matched实现面包屑功能

  9. C#中使用泛型对象(List<T>)对xml文件中的重复节点进行的序列化和反序列化

    本文描述将对象(List<T>)序列化到 XML 文档中和从 XML 文档中反序列化为对象(List<T>). 命名空间: System.Xml.Serialization 程 ...

  10. 【Go】彩云小译翻译接口js逆向解密返回值

    一.前言 对彩云小译网页版进行抓包分析,将js算法代码转换成go代码,使用go发送http请求编写一个翻译小工具. 主要实现: 翻译(解密翻译结果) 单词字典查询 生成JWT(保持有效期) 二.抓包 ...