我们在工作中经常会涉及到GIT命令的使用,本文主要内容是对工作中经常使用Git的命令进行介绍。
说到git命令,不得不提到另外两个相关的概念:repo和gerrit,很多大型公司都是基于repo脚本进行代码管理,同时会搭建自己的gerrit代码审核服务器。
三者关系如下:
微信图片_20180114114447.png
关于repo
人们经常会将repo和git联系起来,Repo是谷歌用Python脚本写的调用git的一个脚本。主要是用来下载、多个Git仓库。
看过Android源码的同学都应该知道,Android项目那是由多个git仓库组成的,它有非常多的分支。
如:android/framework/base它就是一个git仓库。
android/packages/apps/Camera(app下面的所有的应用都是单独的git仓库进行的管理)
简单来说就是:Git管理单独的模块,而repo管理所有的Git库,将多个Git库组合在一起,形成一个完整的大版本。
关于Gerrit
Gerrit是一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。具体的页面操作,权限控制不做过多介绍。
git仓库文件状态
GIT仓库所在的目录称为工作目录,这个很好理解,在工作目录中的文件被分为两种状态,一种是已跟踪状态(tracked),另一种是未跟踪状态(untracked)。只有处于已跟踪状态的文件才被纳入GIT的版本控制。如下图:
image.png当我们往工作目录添加一个文件的时候,这个文件默认是未跟踪状态的,我们肯定不希望编译生成的一大堆临时文件默认被跟踪还要我们每次手动将这些文件清除出去。用以下命令可以跟踪文件:git add <file>
git常见命令操作
image.png- 文件操作命令
常用对文件操作为:修改、删除
修改:git add
删除:git rm
重命名:git mv
补充:
git status -s
git add –u 将git维护的文件的改变全部添加到暂存区
git add –A 将当前模块中所有的改变添加到暂存区,包括untrack的文件,这条命令使用要谨慎,因可能会添加一些不必要的文件。
git clean -fd 删除untrack的文件(包括文件夹),谨慎
- 查看提交记录(git log)
git log [options] <path>:
-p 查看修改详情
--stat 查看修改了哪些文件
-n n表示数字,即你希望查看几条记录
<path> 表示查看该路径文件的修改记录
补充:
git show <commit>
git whatchanged <commit>
git log --author=huihui
git log --grep=<pattern>
- 代码回退(git reset)
git reset的三种模式:
--hard 将暂存区和工作区都回退到commit节点
--mixed 将暂存区回退到commit节点,工作区不变
--soft 暂存区和工作区均不变,只回退本地库到commit
使用场景:git reset --soft HEAD^
单个文件回退到某一版本:
git reset <commit> <filename>(恢复暂存区中的该文件)
git checkout <commit> <filename>(恢复暂存区和工作区)
- 修改同步(git checkout)
git checkout <path> 将文件从暂存区check到工作区
分支操作:
git checkout –b <branch_name> <remote_branch_name>
切换分支:
git checkout <branch_name>
补充:
git branch -a 查看所有分支,-r查看远程分支
git cherry-pick 将其他分支的提交应用到当前分支(重要)
- 修改暂存(git stash)
用来保存当前的修改(包括工作区和暂存区):
git stash save pop apply drop list show clear
使用建议:
git stash save 和 git stash apply 成对使用
git stash show 查看修改内容
git stash list 查看stash的列表
git stash clear 清除所有stash的内容
- 其他
git revert <commit> 回退之前的提交
git blame -L n,m 查看具体代码的引入人
repo forall -c ……针对项目中的所有模块进行操作
参考:
https://www.cnblogs.com/lexuele/p/5133601.html
http://blog.csdn.net/zy00000000001/article/details/70507740
网友评论