本篇记录平时git 用到的常用命令
git status
$ git status
- 显示文件状态
$ git status -s
- 以精简的形式显示文件状态
git add
$ git add . // 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
$ git add -u // 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
$ git add -A // 提交所有变化
git commit
$ git commit -m 'message'
- 添加更改记录
$ git commit -am 'message'
- 添加已跟踪过的文件
$ git commit --amend
- 修改已提交的commit记录, 也叫追加提交
一些commit规范,如下所示
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
modify:修改代码,并非修改bug,可能是优化代码
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
git reset
$ git reset --soft HEAD^
- 不删除工作空间改动代码,撤销commit,不撤销git add .
- 简单来说就是删除git log 的记录 不撤销暂存区的内容
$ git reset --mixed HEAD^
- 不删除工作空间改动代码,撤销commit,并且撤销git add .
- 简单来说就是删除git log 的记录并且撤销暂存区的内容
-
--mixed
默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果一样。
## 回退至上一个版本
$ git reset --hard HEAD^
- 删除工作空间改动代码,撤销commit,撤销git add .
- 完成这个操作后,就恢复到了上一次commit的状态。
HEAD
: 表示当前版本
HEAD^
:表示上一个版本
...以此类推
或者
HEAD~
: 表示上一个版本
HEAD~2
:表示上两个版本
...以此类推
git log
$ git log
- 查看commit的版本日志(包含提交的版本 操作者 日期)
- 版本回退后 该指令不能查看回退前的日志信息
git log --oneline
- 缩略展示提交信息 更直观 流畅
git reflog
$ git reflog
- reflog是git操作的一道安全保障,它能够记录几乎所有本地仓库的改变。包括所有分支commit提交,已经删除(其实并未被实际删除)commit都会被记录。
git diff
## 默认比较查看当前分支的改变
$ git diff
git fetch
$ git fetch
- 将某个远程主机的更新全部取回本地
$ git fetch -p
- 获取远程仓库的新分支以及删除远程仓库已删除的分支
git pull
$ git pull origin <远程分支>
// 配置ssh连接
// git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
- 拉取指定远程分支
$ git pull --all
- 拉取所有远程分支
git push
$ git push origin <远程分支>
- 推送本地当前分支到指定远程分支
git push <remote address> --all
- 推送本地所有分支到指定远程仓库地址
合并代码的完整操作
## 在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
$ git fetch origin master:temp
## 比较本地代码与刚刚从远程下载下来的代码的区别
$ git diff temp
## 合并temp分支到本地的master分支
$ git merge temp
## 如果不想保留temp分支,删除
$ git branch -d temp