git 账户配置

vim ~/.gitconfig
修改[user]下的 name 和 email为 github上的名称和邮箱。

删除

先 git rm 在 git commit

git add 添加 多余文件

这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了

clone 指定tag

git it clone --branch [tags标签] [git地址]

使用branch参数,后面加上tag标签,最后是git仓库的地址

Git flow

是一个规范

Master 分支:不允许在master分支上进行任何的commit,只能从release或者hotfix merge回来

dev分支:整合不同的feature,该分支下可能不稳定,通常也不会在该分支下commit,而是通过merge的方式将feature的功能merge进来。

feature分支:由dev分支分出来,最后被回并回去。

release分支:dev分支分出来的。在该分支下做全面的测试,完成之后,会再merge回master和dev分支。

hotfix分支:master分支分出来的,上线时候发现一个紧急的bug,开出来修bug然后结束merge回master个dev

命令

  • git init :初始化git
  • git add :
  • git commit:

​ git commit --amend --no-edit:将当前staged的状态放到上一个commit当中,不想改上一个commit的message

​ git commit -am ”“ : add和commit一起做

  • git reset :将文件从staged状态返回到unstaged状态(文件本身并没有改变)

​ git reset --hard 提交号 : 回到过去的某个commit

​ 是回到过去然后产生新的未来

  • git reflog: 可以看到HEAD的每一步的变化以及其commit号
  • git checkout commitid -- 文件名:将某个文件转换到之前某个提交的版本

​ 是回到过去然后修改再回到当前继续未来

  • git status -s:
  • git log: --oneline --graph
  • git diff :查看的是当前unstaged状态和staged的对比

​ git diff --cached 查看当前staged状态和上一个commit的对比

​ git diff HEAD 查看当前unstage状态和上一个commit的对比

  • git branch xxx :建立分支

​ git branch :查看所有的分支

​ git checkout 分支 :切换分支

​ git branch -d xxx: 删除分支

​ git checkout -b xxx: 建立分支的同时移动HEAD 到分支上去

  • git merge --no-ff -m "keep merge info" dev

    git merge dev: 默认是fast forward 不会看到信息

  • git rebase: --continue --skip --abort

  • git stash: 将现在还未提交的修改放到暂存区,做其他任务等其他任务完成再恢复暂存。

    ​ git stash pop :返回你当时暂存的修改

GitHub

下载很慢怎么解决?

git commit message怎么写

  • 1-2个小改动就该commit,不要改动一堆之后才一个commit
  • 把关键字写上,带点短小的description。或者如果你遵守软件工程的做法,产品狗和测试给你开workitem或者bug的话,把id写上,这样的话description已经写在workitem和bug里面了你不用写了。

提交信息的结构
一条 commit 信息通常包括3个部分:

type: [标题]

body

footer

Type:类型 具体来说,Type 分为:

feat: 增加新功能;
fix: 修复错误;
docs: 修改文档;
style: 修改样式;
refactor: 代码重构;
test: 增加测试模块,不涉及生产环境的代码;
chore: 更新核心模块,包配置文件,不涉及生产环境的代码;

Subject:标题 标题不超过50个字符,结尾不需要对应的句号;应该使用祈使句来描述,比如:修复标点符号错误。

Body:正文

并不是所有的 Commit 都需要正文,所以这一模块是可选的,必要的时候对本次 Commit 做一些背景说明,阐释具体的原因和内容,但是不解释具体的过程。

注意:正文的文字不能超过72个字符。

Footer:结尾

结尾是可选的,通常来说可以添加对一些错误信息ID的补充。

Example:举例

docs: add FAQ in readme file