git常见问题解决与技巧

一张图阐述git的日常

分支规范

l  master分支为主分支(保护分支),不能直接在master上进行修改代码和提交

l  develop分支为测试分支,所以开发完成需要提交测试的功能合并到该分支

l  feature分支为开发分支,大家根据不同需求创建独立的功能分支,开发完成后合并到develop分支

l  fix分支为bug修复分支,需要根据实际情况对已发布的版本进行漏洞修复

Commit 格式规范

type(scope):subject

type:用于说明commit的类别,规定为如下几种 

l  feat:新增功能;

l  fix:修复bug;

l  docs:修改文档;

l  refactor:代码重构,未新增任何功能和修复任何bug;

l  build:改变构建流程,新增依赖库、工具等(例如webpack修改);

l  style:仅仅修改了空格、缩进等,不改变代码逻辑;

l  perf:改善性能和体现的修改;

l  chore:非src和test的修改;

l  test:测试用例的修改;

l  ci:自动化流程配置修改;

l  revert:回滚到上一个版本;

Git时间线操作

相关命令

git reset –hard id(id为提交版本id)

git reset –hard HEAD^

git reset –hard HEAD~n(n为时间往前第n个提交)

git log

git log –pretty=oneline

git reflog

相关问题:

如何恢复已经删除掉的分支?

在记得提交号的情况下,可以使用 git reset –hard id的方式来将指针指向已删除的分支内容。如果提交号不记得的情况下,也是有办法恢复已删除的分支的。首先通过git reflog来获取近期的每一次命令,然后查找删除分支最近的一次提交,找到提交号,则又可以顺利的取回分支内容。

Stash 和 Pop

相关命令

git stash 将工作区隐藏

git stash list 获取隐藏工作区列表

git stash pop 获取最上面一个隐藏工作区代码并删除

git stash apply 获取最上面一个隐藏工作区代码,但不删除

git stash drop  删除最上面一个隐藏工作区代码

git stash apply stash@{0} 获取指定位置的隐藏工作区代码

相关问题:

当下正在进行dev代码开发,突然来了生产bug1.0需要及时修复,但是dev下开发的代码又没提交,这个时候该如何操作?

先通过git stash 将当前工作区代码隐藏到栈中,保存临时状态。再切出一个fixbug分支来解决问题,当问题解决后,通过git stash pop取回隐藏到栈中的工作区代码,继续dev的开发。通过git stash pop命令取回工作区代码的同时,还会将栈中之前推进去的代码删除。git stash list是查看所有临时工作区代码。也可以通过git stash apply stash@{0}来精确恢复栈中的代码。

Ignore

规则

l  忽略文件中的空行或以井号(#)开始的行将会被忽略。

l  可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。

l  如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

l  如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

l  如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

修改上次提交记录message

相关命令

git commit –amend

问题

代码已经提交到git库,leader审核的时候发现有个Java文件代码有点问题,于是让你修改,并且代码又不需要丢弃,只需要修改相关源码,修改完成后Add后,需要将上次修改的message也修改掉。

可以执行上述命令,进入vim编辑器,然后按c进入编辑状态,编辑完成后按esc退出编辑模式,最后按大写的ZZ即可保存并退出vim编辑器。如果不修改message,仅仅只是对上一次提交进行修改(不做为新的提交),则在上述命令后加上—no-edit即可。

猜你喜欢

转载自blog.csdn.net/shirakawakanaki/article/details/81486590