git 常用命令

49 阅读6分钟

前言

在平时开发过程中,一定的Git能力是必不可少的,如果对Git的概念或命令不熟悉,使用过程就需要badidu或google,所以在这个对Git的使用做一个总结。

Git区域概念

先上图:

git.jpg

  • 暂存区:这个区域就是我们每次执行 git add 之后会存到的区域,用来与本地仓库之间做一个缓存,同时也是 Git 底层设计上来说也算是比较重要的一个区域,它能帮助 Git 在做 diff 的时候提高查找性能。

  • 工作区:这个一般就是我们写代码的地方,比如你的 vscode 打开的项目,你可以进行代码编辑的地方。

stash

除了上述区域外,还有一个特殊的区域,就是本地的git存储区。你可能会在某些场景用到它,比方说,你正在开发某个featurue的代码,这时你的同事需要你马上解决其他分支的问题,而你正在开发的功能还没写完,不想提交到git仓库中,那么你就可以考虑使用git stash save '临时保存代码',等你解决其他分支的问题之后,就可以使用git stash pop。该命令具体使用如下

  • git stash save 'xxx': 储存变更
  • git stash list: 查看储存区所有提交列表
  • git stash pop: 弹出并应用最近的一次储存区的代码提交
  • git stash drop stash@{n}: 删除某次储存记录
  • git stash clear: 清楚所有 stash 信息

git常用命令

git log

查看当前分支所有提交过的版本信息,不包括已经被删除的 commit 记录和reset的操作 常见用法:

  • git log
  • git log --pretty=oneline 只会显示版本号和提交时的备注信息

git reflog

查看所有分支的所有操作记录信息(包括已经被删除的 commit 记录和 reset 的操作)

git clone

常见用法:

  • git clone xxx.git
  • git clone xxx.git -b branch1

git init

初始化git仓库

git remote

常见用法:

  • git remote add origin xxx.git
  • git remote rm origin

git branch

常见用法:

  • git branch:查看本地所有分支信息
  • git branch -r:查看远程仓库所有分支
  • git branch -a:查看本地和远程仓库所有分支

git checkout

常见用法:

  • git checkout dev 切换到指定的分支
  • git checkout -b dev2 创建并切换到新分支
  • git checkout -b [分支] [commitid] 以当前分支的commitid提交节点创建新的分支并切换到新分支

git add

将一个或多个文件添加到暂存区 常见用法

  • git add [file1] [file2]
  • git add . 把当前目录所有已改动的文件添加到缓存区
  • git add -A 把当前仓库内已改动的文件添加到缓存区

git rm

假设我们有一个不需要提交到仓库的文件不小心提交到了远程仓库,如果仅仅是把这个文件添加到.gitignore中是没有用的,需要先删除。直接右键删除的话,这个文件还是会被保存到远程仓库。 常见用法:

  • git rm [file1] 删除文件
  • git rm -r [dir] 删除文件夹

git push

常见用法:

  • git push origin master

git pull

常见用法:

  • git pull origin branch1 拉取指定远端分支合并到本地当前分支
  • git pull 当前分支已经和远端分支建立了联系

git pull命令实际上就是其他两个命令的结合体,先git fetch然后紧接着git merge

git fetch

常用命令

  • git fetch <remote> Fetch仓库中所有分支。同时也会下载指定远端的所有commits和文件。
  • git fetch <remote> <branch> Fetch 指定分支
  • git fetch --all fetch所有已注册过的远端仓库的全部分支。

git merge

常见用法:

  • git merge master 合并master分支的内容

git reset

用法:

  • git reset [--soft | --mixed | --hard] [HEAD]

HEAD

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • HEAD~n 回撤 n 个版本

参数

  • --soft: 重置你最新一次提交版本,不会修改你的暂存区和工作区。
  • --mixed: 默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
  • --hard: 重置所有提交到上一个版本,并且修改你的工作区,会彻底回到上一个提交版本,在代码中看不到当前提交的代码,也就是你的工作区改动也被干掉了。

git revert

git revert 撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销,作为一次最新的提交。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。 用法:

  • git revert HEAD
  • git revert HEAD^
  • git revert commitid

git cherry-pick

将一个分支上的某个commit合并到另一个分支,可用使用cherry-pick命令实现。
常见用法:

  • git cherry-pick master commitId1 commitId2 commitId4

git rebase

变基,改变基底。feature分支是基于master分支的B拉出来的分支,feature的基底是B。而master在B之后有新的提交,就相当于此时要用master上新的提交来作为feature分支的新基底。实际操作为把B之后feature的提交先暂存下来,然后删掉原来这些提交,再找到master的最新提交位置,把存下来的提交再接上去(接上去是逐个和新基底处理冲突的过程),如此feature分支的基底就相当于变成了M而不是原来的B了。(注意,如果master上在B以后没有新提交,那么就还是用原来的B作为基,rebase操作相当于无效,此时和git merge就基本没区别了,差异只在于git merge会多一条记录Merge操作的提交记录)
常见用法:

  • git rebase master

git tag

常见用法:

  • git tag v1.0.0 轻量标签
  • git tag -a v1.0.0 -m "发布正式版 1.0.0" 附注标签
  • git push origin v1.0.0 推送标签
  • git tag 查看标签
  • git tag -l v1.0.0 筛选标签
  • git tag -d v1.0.0 删除标签
  • git push origin --delete v1.0.0

git提交规范

feat: 新功能(feature)
fix: 修补bug
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)
refactor: 重构(即不是新增功能,也不是修改bug的代码变动)
chore: 构建过程或辅助工具的变动
revert: 撤销,版本回退
perf: 性能优化
test:测试
improvement: 改进
build: 打包
ci: 持续集成