git个人使用总结(命令版)
一、基础命令
快照类操作:add、status、diff、commit、reset、rm、mv
分支类基本操作:branch、checkout、log、stash
分享及更新项目基本操作:pull、push
组合场景操作:
获取代码:创建仓库(UI)、clone
提交代码:add、status、diff、commit、reset
分享代码:branch、push
更新代码:stash、rebase、pull
阅读代码:checkout、log
贡献代码:fork、merge request
二、以下为具体操作与截图
1、获取代码
在git bash命令下执行git clone <git下载地址>,例如:git clone git@git.scm.test.com:zhanyuyi/git_basic_homework.git
2、 建立.gitgnore
(1)第一次提交代码前,建立.gitignore,在git bash命令下执行touch .gitignore即可生成
(2)建立.gitignore后,提交
//添加.gitignore文件到暂存区
git add .gitgnore
//提交
git commit -m "chore:添加.gitgnore,忽略不需要版本跟踪的文件"
(3)用文本编辑器如editplus或notepad++输入需要忽略的文件或文件名,一般可忽略的文件有以下:
##ignore this file##
/target/
.classpath
.project
.settings
##filter databfile、sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class
*.dll
*.exe
*.o
*.so
# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.via
*.tmp
*.err
# OS generated files #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
备注:
/target/ :过滤文件设置,表示过滤这个文件夹
*.mdb ,*.ldb ,*.sln 表示过滤某种类型的文件
/mtk/do.c ,/mtk/if.h 表示指定过滤某个文件下具体文件
!*.c , !/dir/subdir/ !开头表示不过滤
*.[oa] 支持通配符:过滤repo中所有以.o或者.a为扩展名的文件
该方法保证任何人都提交不了这类文件
3、提交代码
本地working directory、staging area暂存区、local repo三个区域间切换关系
提交代码前需要做好2点,第一,一次提交只做一件事;第二,review后才提交。
通常为以下步骤:
//步骤1:查看本地仓库状态 git status //步骤2:添加认为本次提交应包含的文件到暂存区 git add file1 ... //步骤3:review暂存区内容 git diff --cached //若review发现问题,则继续修改,然后再add,直到满意 ... //步骤4:提交到本地仓库 git commit -m "feat:新增a.java" //步骤5:提交到远程仓库 git push
有提交必然有提交日志,提交日志格式:
<type>(<scope>):<subject> //空一行 <body>
提交日志规范如下:
type
用于表示commit的类别,允许用下面8个标识
ftr/(feat):新功能(feature)无ftr历史原因的,请使用feat
fix:修补bug
docs:文档(documentation)
style:格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
conflict:解决冲突 scope
用来标识当前提交代码的影响范围
如果jira单对应,用(#jira-)的格式来标准(如果jira单对应feat或fix,强制性添加)
如果没jira单对应,则按层级描述代码的影响范围(eg:view,viewmodel,net,test,model,utils,protocol,presenter)
如果在代码评审工具Phabricator评审代码,在scope中加上fix的hash id
如果没合适的范围,可以不填 subject
是commit目的的简短描述,不超过50个字符。
以动词开头
结尾不加句号(。)或句点(.) body
是对本次commit的详细描述,可以分成多行
提交范例:
有jira单例子
ftr(#JIRA-):完成计算器加减开发 计算器加减法功能完成
-添加加减法计算UI
-添加错误提示样式
没jira单例子
refactor(viewmodel):重构add viewmodel部分代码,提高性能 add计算逻辑优化
-整型改为浮点型计算
4、合并代码
合并他人分支时,例如需要把task_TEST-1_zhanyuyi合并到master分支
第一,若不在master分支,使用git checkout master把当前分支切换到master分支;
第二,使用git merge task_TEST-1_zhanyuyi后,确定merge成功;
第三,使用git push,把当前的master分支推送到远程master分支;
5、分享代码(创建分支、推送到远程分支)
第一,创建专属分支git branch <分支名>,分支命名规则:<任务类型>_<任务序号>_<姓名拼音缩写>,例如:task_JIRA-1_zhanyuyi
第二,第一次push到远程分支(在远程仓库创建分支并绑定到本地同名分支),git push -u origin <分支名称>
第三,非首次push到远程分支,git push
以下为本地常用分支操作
//查看分支
git branch //创建分支
git branch <分支名> //切换分支
git checkout <分支名> //创建+切换分支
git checkout -b <新分支名字> //删除分支
git branch -d <需删除的分支名>
6、更新代码
当你正在专属分支开发时时,临时需要改BUG或切换分支,可用下面的步骤
//存储所有目前带有版本跟踪的文件,并把文件恢复回和最新提交一致的内容
git stash //去做所有想做的事情,例如改BUG,切分支 //搞定想做的事情后,准备继续前面的工作,切回原分支
git checkout <原工作分支名字> //把第一步存储的文件全部恢复回来
git stash pop
然而无专属分支时,确实需push
//存储所有目前带有版本跟踪的文件,并把文件恢复回和最新提交一致的内容
git stash //获取远程仓库最新代码,并应用到本地
git pull //推送远程仓库
git push //把第一步存储的文件全部恢复回来
git stash pop
在上面步骤看到git pul可以获取远程仓库最新代码并应用到本地,其实git pull效果等价于git fetch+git mergre<本地当前分支名>
副作用:若pull时,本地有代码没push,会产生一次merge提交。不推荐在没有进行stash的前提下pull,容易冲突。
副作用解决方法:为了同步公共分支最新内容,用git fetch+git rebase origin/<本地当前分支名称>代替git pull
例:
git fetch origin git rebase origin/<本地当前分支名>
7、阅读代码
当你正在一个分支,突然想看看别人分支的代码,可以用以下方法
//先把正在编辑的分支保存起来
git stash //查看当前分支提交日志
git log //查看日志,一行一行阅读日志
git log --online //切换到指定提交后的状态
git checkout <单次提交的sha-> //做你想做的事情
。。。
//最后,记得把第一步存储的文件全部恢复回来
git stash pop
看到这里,<单次提交的sha-1>相信大家疑问在哪里取,其实,在查看日志每个提交开头,7位,类似b76a6c5,如果切换到前一个提交后,一切正常还想看看前前一个提交如何,就用下面的方式
//查看上一个提交改了什么
git log -p <提交的sha->
8、贡献代码
在网页fork,然后merge request
三、GIT网页操作
1、版本对比
【compare】后,展开两个版本修改内容,绿色代表新增,红色代表删除。展开某个类后,选择右侧的【Side-by-side】做左右对比
2、用到继续写
四、git技术栈脑图
(从简书上搜索的https://www.jianshu.com/p/e73b2bf0f62f)
git个人使用总结(命令版)的更多相关文章
- Git笔记:Git介绍和常用命令汇总
Git 是一个开源的分布式版本控制系统,与 CVS, Subversion 等不同,它采用了分布式版本库的方式,不需要服务器端软件支持. 工作流程 Git 的工作流程大致如下: 克隆 Git 资源作为 ...
- Git的一些常用命令
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 简单的说就是托管代码的便于多人开发的管理系统. 二.Git的一些命令,我详细的说一下 我是基于github给大家说一下git的一些常 ...
- Git上传代码命令
对于Git在这不做说明:只介绍Git使用过程中的常用命令: 一.创建仓库,提交文件 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git a ...
- git plumbing 更加底层命令解析-深入理解GIT
原文: http://rypress.com/tutorials/git/plumbing 本文详细介绍GIT Plumbing--更加底层的git命令,你将会对git在内部是如何管理和呈现一个项目r ...
- Git中的merge命令实现中出现问题及其解决
Git中的merge命令实现和工作方式 2015年8月17日星期一 丹丹 git代码在合并两个分支的时候总是会出现一下的错误提示,不能正常的完成合并分支,错误提示如图所示: 但是在其他的终端是可以完成 ...
- github总结(4)--关于git reset --hard这个命令的惨痛教训
背景叙述: 前几天,上传自己的个站到git上的时候,手欠脑发晕的用了次git reset --hard xxxxxx 命令.由于只在线上传入了一个index.html页面(自己都不知道自己咋想的,就这 ...
- GIT学习笔记——常用命令
最近使用使用GIT较多,但命令很容易就忘记了,于是整理下,大多整理与一些文档和他人博客 在当前目录新建建一个纯git代码库 $ git --bare init 在当前目录新建一个Git代码库 $ gi ...
- Git安装以及常用命令(图文详解)
**Git安装以及常用命令** 1.下载安装Git,傻瓜式安装相信大家都会. 官网下载地址:[https://git-scm.com/downloads] 2.Git基本操作 (1)git --ver ...
- 【转】Git 代码行统计命令集
查看git上个人代码量 git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; su ...
随机推荐
- XAudio2播放PCM
XAudio2 是一个跨平台的API,在Xbox 360及Windows中得到支持.在Xbox 360上, XAudio2作为一个静态库编译到游戏可执行文件中.在Windows上,XAudio2提供一 ...
- Dreamweaver安装须知
1.断网安装,否则让你登录邮箱什么的,安装完成后退出,先不要运行: 2.将破解的文件直接复制到安装的文件的地方覆盖:(将32文件夹下的amtlib.dll复制到安装完毕的dw_cs6下,覆盖原来的am ...
- Fiddler抓包1-抓firefox上https请求【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/p/6538021.html 前言 fiddler是一个很好的抓包工具,默认是抓http请求的, ...
- python cProfile分析程序性能
转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...
- hdu 3635(并查集)
Dragon Balls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- MSSQL 让排序更方便灵活
SQL: SELECT * FROM table1 ORDER BY CASE WHEN field=value THEN 1 ELSE 0 END (ASC/DESC) 是不是很方便呢,哈哈
- 洛谷 P1803 凌乱的yyy【经典贪心/选择不相交区间】
题目背景 快noip了,yyy很紧张! 题目描述 现在各大oj上有n个比赛,每个比赛的开始.结束的时间点是知道的. yyy认为,参加越多的比赛,noip就能考的越好(假的) 所以,他想知道他最多能参加 ...
- 搭建负载均衡的环境(利用虚拟机上的四台centos)
以下转载: 准备 l 系统:Centos6 (三台) l 负载均衡:LVS + keepalived l 服务器1:Http l 服务器2:Http ip配置 1.VIP(virtual ip): ...
- Out of Sorts II
问题 E: Out of Sorts II 时间限制: 1 Sec 内存限制: 128 MB提交: 68 解决: 4[提交] [状态] [讨论版] [命题人:] 题目描述 Keeping an e ...
- 关于spring.net的面向切面编程 (Aspect Oriented Programming with Spring.NET)-使用工厂创建代理(Using the ProxyFactoryObject to create AOP proxies)
本文翻译自Spring.NET官方文档Version 1.3.2. 受限于个人知识水平,有些地方翻译可能不准确,但是我还是希望我的这些微薄的努力能为他人提供帮助. 侵删. 如果你正在为你的业务模型使用 ...