一、tag相关

1-1.显示所有的tag

  • git tag

1-2. 查看某个版本系统的tag(过滤查看)

  • git tag -l 'v1.0.*'

1-3. 创建标签

  • git tag -a v1.0.0 -m '内容'
  • git tag v1.0.0

1-4.查看标签的详情

  • git show v1.0.0

1-5.推送标签

  • 推送单个分支tag:git push origin v1.0.0
  • 推送本地所有tag:git push origin --tags

1-6.删除标签
删除本地标签

  • git tag -d v1.0.0

删除远程标签

  • git push origin :refs/tags/v1.0.0

1-7.完整的打tag

  • git add *
  • git commit -m 'v1.0.0'
  • git tag v1.0.0
  • git push
  • git push origin v1.0.0

1-8.给指定的commit号加tag
打tag不必要在head上打,也可以在之前的版本上打tag,需要知道某个提交对象的校验和(通过git log获取,取校验和的前几位数字即可)

  • git tag -a v1.0.3 9fedrf -m 'my tag'

二、stash

git stash的内容与branch无关

2-1 git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来,执行完这个命令后,执行git status会发现当前是一个干净的工作区,没有任何改动.

可以使用 git stash save 'message' 添加一些注释
PS:stash是本地的,不会通过git push 命令上传到git server上。

2-2 git stash list

显示保存进度的列表,也就是说 git stash可以多次执行。

2-3 git stash pop

  • 恢复之前缓存的工作目录,且将缓存堆栈中的第一个stash删除
  • git stash apply 会将缓存区的第一个stash应用到工作目录,而不会删除相应的stash存储。

2-4 git stash drop [stash-id]

删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。

2-5 git stash clear

删除所有存储的进度

2-6 查看制定的 stash diff

可以使用 git stash show stash@{0}查看stash的文件目录

2-7 暂存未跟踪或忽略的文件

git stash 默认不会缓存在工作目录中的新文件、被忽略的文件。
git stash 命令提供了参数用户缓存上面两种类型的文件,使用 -u 可以 stash untracked 的文件。使用 -a 可以 stash 所有的文件。

三、reset

soft

有时候,我们在本地 git add && git commit -m ‘’ 之后,我们想要撤回commit.
这个时候可以使用如下命令成功撤回了commit ,且本地文件会保留不会删除

git reset --soft HEAD^

hard

如果代码已经push到仓库,但是本地想要去回退到某个版本

git reset --hard HEAD^ — 回退到上一个版本
git reset --hard <commitID> – 回退到制定commit版本

如果代码在本地修改了一部分,想要全部舍弃,回退到远程仓库的状态
git reset --hard origin/main

四、git log

  1. git shortlog -sn
    数据从大到小,查看一个项目的提交者和提交次数。

  2. git log --stat
    与 git log 相比,除了 author、Date、提交信息外,还可以看到提交的文件、文件行数。

  3. git diff --shortstat "@{n days ago}"
    统计 n 天前至现在文件改动数、代码行数添加数、代码行数删减数

  4. git log --since=2022-01-01 --until=2022-12-31 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
    统计一段时间内,添加和删除的代码行数

五、其它

  1. git update-ref -d HEAD
    重设第一个commit

  2. git pull --rebase A master:dev
    fork了一个仓库(fork),本地仓库(origin),想要拉取 fork 仓库的最新提交:
    git remote add fork ‘fork url’
    然后执行上面命令,就可以拉取最新 master 分支的提交到本地分支 dev