git 操作记录(二)

本篇记录平时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  --all
  • 推送本地所有分支到指定远程仓库地址

合并代码的完整操作

## 在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
$ git fetch origin master:temp

## 比较本地代码与刚刚从远程下载下来的代码的区别
$ git diff temp

## 合并temp分支到本地的master分支
$ git merge temp

## 如果不想保留temp分支,删除
$ git branch -d temp

你可能感兴趣的:(git 操作记录(二))