Android Git 常用命令和规范
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70332707
本文出自【赵彦军的博客】
文章目录
- 概念
- git 操作流程图
- 专有名词了解
- 常见命令
- 1、查看 Git 版本信息
- 2、获取当前登录的用户
- 3、获取当前登录用户邮箱
- 4、设置当前登录用户的用户名
- 5、设置当前登录用户的邮箱
- 6、初始化仓库
- 7、查看本地所有的分支
- 8、查看本地和远程所有分支
- 9、查看远程所有分支
- 10、创建分支
- 11、切换分支
- 12、创建并切换分支
- 13、添加文件
- 14、批量添加文件
- 15、查看log
- 删除相关
- 拉取更新
- commit相关
- push相关
- merge
- rebase
- stash
- Diff 相关
- Tag 相关
- 回退 reset 相关
- reset --hard 恢复
- 合并多个commit为一个commit
- Git commit 日志规范
- 参考资料
在 Android Studio 中要操作 Git 服务,有两种方式,它们分别是 GUI 和 命令行方式,今天就着重介绍 命令行 方式操作 Git 服务 。
首先在 Android Studio 里面找到 命令行窗口,如下图所示:
概念
git 操作流程图
专有名词了解
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
常见命令
1、查看 Git 版本信息
git --version
结果:
git version 2.11.0.windows.1
2、获取当前登录的用户
git config --global user.name
结果:
zhaoyanjun
3、获取当前登录用户邮箱
git config --global user.email
4、设置当前登录用户的用户名
git config --global user.name '赵彦军'
5、设置当前登录用户的邮箱
git config --global user.email '362299465@qq.com'
6、初始化仓库
文件夹下初始化一个仓库,此时文件里会到一个.git
的隐藏文件夹
git init
7、查看本地所有的分支
git branch
效果如图所示:
可以看出,我的本地有两个分支:master 分支 、zhaoyanjun 分支。 master 分支 显示的是绿色,左侧有一个 * 号,表示,当前我们在 master 分支上操作。
8、查看本地和远程所有分支
git branch -a
效果如图所示:
可以看出,本地有两个分支(master、zhaoyanjun),红色的记录有4条,代表4条远程分支(laijian、master、zhaoyanjun、zhiqiang)。
9、查看远程所有分支
git branch -r
10、创建分支
创建 dev 分支。
git branch dev
11、切换分支
切换 dev 分支为当前分支
git checkout dev
12、创建并切换分支
创建并切换 dev 分支。相当于 git branch dev
和 git checkout dev
的合集。
git checkout -b dev
13、添加文件
把 当前根目录中的 loader1.png
添加在暂存区。 add 后面需要写 文件的相对路径。
git add loader1.png
把 image
目录下的 loader1.png
图片添加到暂存区
git add image/loader1.png
在 Android Studio 很多层级的目录文件中,如何获取文件的路径:
14、批量添加文件
git add -A
15、查看log
git log
退出 log
q
删除相关
- 删除本地仓库的分支
git branch -d dev
删除本地仓库的 dev 分支
- 删除远程仓库的分支
git push origin :dev
删除远程的 dev 分支
- 删除本地的一个文件
git rm 文件名
拉取更新
- 拉去远程分支,更新到本地
git pull
- pull 使用 --rebase参数
表示把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把本地当前分支更新 为最新的"origin"分支,最后把保存的这些补丁应用到本地当前分支上。
git pull --rebase
commit相关
我们使用 git add 命令将内容写入暂存区。
git commit 命令将暂存区内容添加到本地仓库中。
提交暂存区到本地仓库中:
git commit -m [message]
[message] 可以是一些备注信息。
提交多个文件到本地仓库中:
git commit [file1] [file2] ... -m [message]
-a
参数设置修改文件后不需要执行 git add
命令,直接来提交
git commit -a
- 提交文件到分支
git commit -a -m '修复一个bug'
push相关
git push 命用于从将本地的分支版本上传到远程并合并。
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
- 以下命令将本地的 master 分支推送到 origin 主机的 master 分支。
git push origin master
相等于:
git push origin master:master
如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:
git push --force origin master
也可以简写成 -f
强制push到远程
git push -f
merge
- 合并本地 dev 分支到当前分支
git merge dev
- 合并其他分支上的节点到当前分支
git merge 2c1ef3a8ead420a8436e8e0754816688a2052606
- 合并远程 dev 分支到当前分支
git merge origin/dev
git-merge命令有以下两种用途:
1、用于git-pull中,来整合另一代码仓库中的变化(即:git pull = git fetch + git merge)
2、用于从一个分支到另一个分支的合并
- 解决合并冲突
git merge --abort
警告:运行 git-merge
时含有大量的未commit
文件很容易让你陷入困境,这将使你在冲突中难以回退。因此非常不鼓励在使用git-merge
时存在未commit
的文件,建议使用git-stash
命令将这些未commit
文件暂存起来,并在解决冲突以后使用git stash pop
把这些未commit
文件还原出来。
rebase
git rebase
你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。
rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交。
不要在公共分支使用rebase
本地和远端对应同一条分支,优先使用rebase,而不是merge
把 master 分支当做基础分支,作用在 feature 分支
git checout feature
git rebase master
把某个 commit 节点当做基础分支
git rebase 4b60fa7b1
你想放弃合并,回到未合并之前的状态
git rebase --abort
从远程 pull 代码到本地的时候,也可以用 rebase
git pull --rebase
git pull
和git pull --rebase
区别:git pull
做了两个操作分别是‘获取’和合并。所以加了rebase
就是以rebase
的方式进行合并分支,默认为merge
。
stash
stash
命令可用于临时保存和回复修改,可跨分支。
- git stash save ‘message’
临时保存状态,可以写信息
//保存当前的修改,名字为 a4
git stash save 'a4'//或者可以省略 save 'message',将默认生成 stash 名字
git stash
- git stash list
查看保存的临时列表
git stash list
- git stash show
查看保存的文件列表
- git stash pop
命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0}
,如果要应用并删除其他stash
,命令:git stash pop stash@{$num}
,比如应用并删除第二个:git stash pop stash@{1}
//恢复最近的临时状态,并删除
git stash pop //恢复指定编号的 stash
git stash pop stash@{num}
- git stash drop
删除某个 stash
//删除 stash 0
git stash drop stash@{0}
- git stash clear
删除所有保存
Diff 相关
比较的是暂存区和工作区的差异
git diff
比较的是暂存区和历史区的差异
git diff --cached
比较的是历史区和工作区的差异(修改)
git diff master
Tag 相关
- 查看所有 tag
git tag
- 删除某一 tag
git tag –d tag名字
- 查看某一标签
git show tag名字
- 给当前分支打标签
git tag 标签名
- 为历史版本打标签
git tag 标签名 该版本ID
回退 reset 相关
reset命令有3种方式:
git reset –mixed:
此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息git reset –soft:
回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可3:git reset –hard:
彻底回退到某个版本,本地的源码也会变为上一个版本的内容
1、 将本地的状态回退到和远程一样
git reset --hard origin/master
2、将暂存区里面的修改清空 , 回退到上一次提交的记录
git reset --hard
3、将本地的状态回退到 某个版本
git reset --hard 5230bb6
将本地状态回退到 5230bb6 这次的提交
reset --hard 恢复
我本地有一条 commit a
,还没有 push 到远程。此时使用 git reset --hard 5848393
回到某个节点,如何找回节点 a
先执行 git reflog
命令
找到你需要恢复的节点的 hash
值
执行 git reset --hard cd786510
就可以回到原来的 commit 了
合并多个commit为一个commit
很多时候,我们需要在自己的分支去完成一个新功能,中间会产生多个临时 commit , 如果我们不做处理,那么这些临时 commit 就会显得特别乱,现在交给大家一个技能,就是把多个 commit 合并成一个,然后提交。
下面用一张图说明:
从上图我们可以看出,我们在 v1版本发布
的基础上,又做了3个提交。我们现在用 rebase 命令把这三个提交合并成一个。
git rebase -i 160ce28
160ce28
为 v1版本发布
的git记录号,这里做参考,表示当前节点不参与合并
或者
git rebase -i HEAD~3
执行完这个命令后,我们将看到如下的合并信息。
上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
根据我们的需求,我们将commit内容编辑如下:
然后保存退出。执行退出命令后,会出现一个修改提交信息的窗口
提交信息如果不需要修改,那么我们直接退出就可以了。下面我们来做一个修改的操作,如下:
修改完成后,保存退出。git 会帮我们做好合并的工作,如下:
我们切换到可视化工具中看看,效果如下:
Git commit 日志规范
一般情况下,在 commit 的时候,是要求必须写 commit 日志,否则不能 commit . 那么 commit 日志也是需要规范的。日志格式一般为:
type( scope ): subject
空行
body
空行
footer
type(必需)、scope(可选)和subject(必需)。
type
用于说明 commit 的类别,只允许使用下面7个标识。
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
如果type为 feat 和 fix ,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。
scope
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。一般有三个可以选择。
- all :表示影响面大 ,如修改了网络框架 会对整个程序产生影响
- loation: 表示影响小,某个小小的功能
- module:表示会影响某个模块 如登录模块、首页模块 、用户管理模块等等
subject
subject是 commit 目的的简短描述,不超过50个字符。
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
body
具体的修改信息 应该尽量详细
footer
放置写备注啥的,如果是 bug ,可以把bug id放入
效果图如下图所示:
参考资料
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
Android Git 常用命令和规范相关推荐
- git常用命令及规范流程
参考地址:https://www.cnblogs.com/my--sunshine/p/7093412.html,感谢分享 官网地址:https://git-scm.com/book/zh/v2 gi ...
- Git常用命令和Git团队使用规范指南
1. 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品--Git.它的出现改变了软件开发流程,大大地提高了开发流畅度,直到现在仍十分流行,完全没有衰退 ...
- 【转载】Git 常用命令大全
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- Git 常用命令速查表(图文+表格)
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- Git 常用命令速查表(图文+表格)【转】
转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git co ...
- GIT常用命令for QA
1. 在别人的项目写代码时 1> 犯了蠢翻天的事情,昨天一直在想其他事情...!!!结果直接把人家代码用非命令行的方式下载下来了(一般都是用命令行).导致git branch -av 等命令不生 ...
- Git 常用命令大全-转载
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- android系列:第一篇 android开发常用命令集合,代码目录简介
下面整理了android开发常用命令集合如adb命令,adb over wifi,jgrep等代码搜索命令,编译环境变量配置,lunch平台选择,mm模块编译,godir代码路径跳转,log.v()等 ...
- Git(笔记三)---Git常用命令
目录 目录 1. Git常用命令 1.1 环境配置 1.2 获取Git仓库 1.2.1在本地初始化一个Git仓库 1.2.2从远程仓库克隆 1.3工作目录.暂存区以及版本库概念 1.3.1 三者关系 ...
最新文章
- Yarn ResourceManager High Availability
- python 神经网络中隐藏层的作用是什么?
- C# 操作线程的通用类[测试通过]
- linux wamp,ubuntu wamp server ..................
- eclipse 使用maven 创建springmvc + mybatis
- 基本技能 100256
- 三端线性稳压器工作原理与典型应用电路分析——78XX与LM317
- Linux开发书籍推荐
- 网易云服务器使用https
- 2016年俄罗斯M2M市场达100亿俄罗斯卢布
- 观大数据有感_读《大数据时代》有感-大数据时代的取舍
- JVM学习教程,带你轻松掌握Java虚拟机,吊打面试官
- linux打印机测试程序,轻松了解Linux打印之CUPS软件
- STM32内部参考电压的使用
- matlab的三维矩阵含义
- 新手如何靠区块链赚钱?
- java中的odb_obd适配器的初始化
- zip 命令的解释与示例
- MySQL中的describe关键字
- 用Qt从零开始学C++:函数和数据类型
热门文章
- catia的vh轴怎么显示_Origin入门教程(三):Origin中曲线怎么平移?
- android控制电脑,android-remote-control-computer
- 三十四、使用pytesser3 和pillow完成图形验证码的识别
- 梯度下降(Gradient Descent)的收敛性分析
- AI领域最最最稀缺的人才——AI架构师
- 深度解读NLP文本情感分析Pipeline
- WWW 2020 开源论文 | 异构图Transformer
- 136个Python 机器学习知识点让你受益终生!
- 你说我导!微软玩转标题描述生成视频
- 循环队列-队列的顺序表示和实现