工作中常用Git指令操作
常用Git指令总结
前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈。所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会。于是,关于Git的的文章也就呼之欲出,总结外加研究一些难啃的指令、Git工作流,后期会慢慢更新。

一、GIt的alias
1.先来说说自己比较喜欢用的简写指令,可根据个人自行配置,下图是本人自己工作常用的git简写:

2.像这样使用: git st ---查看文件提交状态
git ci -m "提交信息说明" ---提交
git br -d branchName ---删除本地分支
git co -b branchName ---切除新分支并跳到该分支上
等一系列简写操作,不用敲一大堆指令出来,高效。虽然看起来没什么,但是工作中非常频繁的使用这些操作,如果能用简写的话其实能提高我们的办公效率。
(PS: 但是平时也看到过一些有工作经历的同事还是使用git checkout ,git status, git branch -d等等,我这就不知道其中的原因了)
欢迎补充自己常用的简写指令,大家相互补充。
二、常用指令描述
1.基本开发流程
以下是简写:st = status, co = checkout, br = branch, ci = commit
git co -b BranchName --切出一个新分支,进入开发
git st --查看当前分支的文件修改状态
git diff --查看哪些文件被修改了哪些部分,指令后面可以接具体的文件路径
git add “具体文件路径” --将文件添加到暂存区
git add . --此时使用点“.”表示将所有的修改的文件添加到暂存区,方便快捷。
git ci -m "修改说明" --提交commit
git pull origin BranchName --拉取远程分支代码到当前分支上,如果出现冲突,解决即可。
git push origin BranchName --将本地分支代码推到远程的对应分支。(PS: 如果有冲突解决后需要重新add和commit,再push)
以上就是在开发过程中自己常用的流程:切分支进入开发-> 开发完成后查看修改文件状态-> diff对比修改了文件的哪些部分-> 提交commit->推到远程分支
解释:a. 如果功能需要几天才能开发完成,可以分几次commit,可以防止开发的代码被自己不小心改动;git pull也可以用git fetch 和git merge 来代替。
b. 也可以使用git stash和git stash apply来暂存已修改的代码,从而不用为了执行git pull而去执行add和commit。
c. 当多人协同开发的时候,同事可能每天都会往该远程开发分支提交代码;所以建议每天最好有1次以上的git pull操作,这样不会到后期合并的时候冲突太多。
2.基本git操作
由于Git的指令用于强大和复杂,在这里介绍的就是自己一些常用的操作,如果你有自己更好的操作方法,欢迎补充完善。
新建和切换分支
git co -b BranchName --新建分支并切换到该分支上
git br -d BranchName --删除某本地分支 (PS: 当“-d”换成"-D"表示强制删除)
git co -b branchName origin/remoteBranch --新建切换到该分支上,并关联远程remoteBranch分支。(自己比较常用的操作)
push和pull操作
git push origin :BranchName --删除远程分支BranchName(空格后面接的是英文冒号哦;其含义就是将一个空分支推到远程该分支上,很好理解。)
git push origin -d BranchName --这也是用于删除远程分支的。
git push origin localBranch:remoteBranch --将本地分支推到远程分支上,如果远程分支上不存在remoteBranch,则会自动创建该远程分支。
git push origin remoteBranch --也可简写成这样。如果当前分支与远程某分支关联后直接可使用git push。
git pull origin remoteBranch:localBranch --pull类似于push,但是指令是值将远程remoteBranch分支拉取到localBranch分支上,位置关系刚好和push相反
git pull origin remoteBranch --将远程remoteBranch分支pull到当前分支。
分支合并
git merge branchName --将branchName分支合并到当前分支上
"git merge branchName --no-ff" --不使用fast-forward模式合并,合并后会生成一个合并提交id。
git merge origin/branchName --合并远程分支
工作区的撤销
git co "文件src" --针对某个具体文件撤销其在工作区的所有修改。(是在只保存而并没有执行add和commit操作)
git co . --撤销工作区所有的文件的修改。(也是只没有执行add和commit)
暂存区 -> 工作区
git reset "文件src" 或 git reset HEAD "文件src" --都是指将暂存区的修改撤销到工作区。
“git reset -- . ” --是指将暂存区的所有修改撤回到工作区.
git本地仓库提交 -> 工作区
git reset —hard HEAD^ --回退到上一次提交(也即上一次提交)
git reset —hard commitID --回退到某一次具体的提交。
暂存操作
git stash --当不想执行add和commit而急需切换分支或者拉取远程代码时,使用这个指令能将本地的修改暂存起来
git stash pop --当执行完拉取相关操作回到该分支,该指令能将之前暂存的代码还原。
查看提交记录
git log --列举每次提交的详细信息,包括提交人姓名。
git reflog --详细列出了用户的每个细节操作,包括切换分支,用户提交等信息。
“git log --oneline --graph --decorate --all” --以命令树的形式展示提交信息,(最好配置alias,这样就不用写这么多了。我配置的是:git tree)
比较修改差异
git diff --展示所有改动文件的修改部分。
git diff "文件src" --展示该文件改动哪些部分。
git diff commit1 commit2 --stat --比较这两次提交有哪些不同。
git diff commit1 commit2 “文件src” --比较这两次提交下,该文件被修改的部分。
3.开发分支命名
看到一篇Gitflow文章,借用其对各个分支命名的规则。根据不同类型的工作对分支进行定义, 分为功能(feature)分支 ,修复(fixbugs)分支,发布(release)分支,开发(develop)分支和主分支 。
自己之前对于分支的命名多半是比较随性,或者根据自己的偏好来取名。现在的话,可以根据不同的类型来对分支进行命名,比如是
功能开发分支可以是feature-1.0,
修复bugs分支可以使fixbugs-1.0,
发布分支叫release-1.0,
开发分支叫develop等等。
后面的1.0也可以是利用自己理解区分的英文。这样取名的话有利用区分自己的这些分支的含义,便于管理。我觉得这是个好方法。
三、小技巧
1.本人使用的是VScode,相信很多人使用,它轻量、可配置、漂亮的主题等等许多优点。当使用VScode编辑器时,命令行cd到对应的项目的时候,再使用“code .”回车VScode就自动打开项目了。有图有真相:

平时比如刚好在命令行,编辑器刚好被我们最小化了,直接使用“code .”就能快捷打开。这是我自己比较喜欢的使用的小技巧,如果你也觉得不错,赶紧去试试吧。
(PS: 同时也可以使用“open .”打开项目对应的文件夹。)
总结
Git指令博大精神,本文也只是介绍自己最常用的一些指令和小技巧,还有些指令还没涉及到比如:fetch,rebase,revert等等。自己用rebase比较少,所以不敢多做叙述误人子弟。文中如有纰漏或者改进之处,热烈欢迎留言。
PS: 感觉篇幅有点长,不知道会不会看着乏味,欢迎各位园友指正。
相关文章的链接:https://juejin.im/post/5844507761ff4b006c3359a9 --Gitflow
工作中常用Git指令操作的更多相关文章
- 工作中常用的QTP操作Excel函数
前言 本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExc ...
- 项目中常用git命令操作指令(一般正常的话够用不够再看相关git命令)
配置git1.首先在本地创建ssh key:ssh-keygen -t rsa -C "github上注册的邮箱" //(一路回车)2.进入c:/Users/xxxx_000/.s ...
- 工作中常用的mysql操作
一.在一个数据库中定义的存储过程或者是函数在另一数据库的存储过程中引用 1.我首先在数据库player_db中构建了一个函数:p_exp_to_level BEGIN ; ; RETURN v_lev ...
- git工作中常用操作总结
这篇文章主要记录下工作中常用的git操作.主要是对之前文章记录的问题做个总结,这个其实在idea中操作更加简单 别名配置 在敲git 命令时,其实可以使用别名,比如 commit可以配置为ci 下面是 ...
- git 工作中常用命令(结合vscode学习git 命令)
作为一名前端开发,大家在工作中常常使用什么开发工具呢,我觉得我首选的是vscode,他配合git使用起来非常方便. 工作中常用三个命令: git终端常使用: git add . git commit ...
- git工作中常用命令-工作中踩过的坑
踩坑篇又来啦,这是我在工作中从git小白进化到现在工作中运用自如的过程中,踩过的坑,以及解决办法. 1.基于远程develop分支,建一个本地task分支,并切换到该task分支 git checko ...
- 收集一些工作中常用的经典SQL语句
作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作中常用的SQL语句,希望能给大家带来一些帮助,当然不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT INTO ...
- 【 PostgreSQL】工作中常用SQL语句干货
接触gp数据库近一年的时间,语法上和其他数据库还是有些许不同,工作中常用的操作语句分享给大家! -- 建表语句 create table ods.ods_b_bill_m ( acct_month t ...
- 工作中常用Linux命令--服务器运维
工作中常用Linux命令--服务器运维 lsof查看端口使用情况 lsof -i:8080更多lsof命令使用说明:http://www.cnblogs.com/peida/archive/2013/ ...
随机推荐
- IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
今天写了个wcf的测试程序放在客户的服务器上供他们测试调用,部署到IIS后浏览报错了,根据错误的提示看出似乎是识别不了这个节点名,偶然的去看了下进程池中该站点的进程池名字的高级设置,看到使用的.net ...
- Android开发学习之路--React-Native之初体验
近段时间业余在学node.js,租了个阿里云准备搭建后端,想用node.js,偶尔得知react-native可以在不同平台跑,js在iOS和android上都可以运行ok,今天就简单学习下rea ...
- 使用Geolocation校正GDAL不支持的数据
对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...
- Android的事件处理-android学习之旅(四十四)
androd事件处理简介 控制飞机移动的简单实例 package peng.liu.test; import android.app.ActionBar; import android.app.Act ...
- 海量数据挖掘MMDS week6: MapReduce算法(进阶)
http://blog.csdn.net/pipisorry/article/details/49445519 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- Visual Studio 2010多线程编程
随着处理数据量的逐渐增大,串行单核的程序,犹如残灯缺月,无法满足运用需求.大规模集群的出现,解决了这一技术难题.本文旨在探讨如何使用多CPU并行编程,关于CUDA的并行前面文章已有讲述.本文结构分为三 ...
- JAVA之旅(八)——多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例
JAVA之旅(八)--多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例 学习是不能停止的 一.多态 我们今天又要学习一个新的概念了,就是多态,它是面向对象的第 ...
- Zookeeper实现master选举
使用场景 有一个向外提供的服务,服务必须7*24小时提供服务,不能有单点故障.所以采用集群的方式,采用master.slave的结构.一台主机多台备机.主机向外提供服务,备机负责监听主 ...
- 文件I/O实践(2) --文件stat
功能:获取文件元数据 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int st ...
- (三十二)DatePicker和自定义键盘
DatePicker通过设置Locale属性可以设置语言(注意手机语言也会影响到它的显示). 如果通过代码创建DatePicker,又要设置属性,使用下面的代码,注意locale是个枚举,初始化要填写 ...