高频使用的 Git 命令

朱雀 2021-08-26 16:42 419阅读 0赞

format_png

前言

汇总下我在项目中高频使用的git命令及姿势。

不是入门文档,官方文档肯定比我全面,这里是结合实际业务场景输出。

使用的 Git版本:git version 2.24.0

命令

git log

  1. # 输出概要日志,这条命令等同于
  2. # git log --pretty=oneline --abbrev-commit
  3. git log --oneline
  4. # 指定最近几个提交可以带上 - + 数字
  5. git log --oneline -5
  6. # 提供类似 GUI 工具的 log 展示
  7. git log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'

查看日志,常规操作,必备

format_png 1

git status

查看工作区状态的东东,不如GUI直观,但是命令行也有一些用的

  1. git status
  2. git status -s
  3. git status --show-stash
  4. git checkout

用来切换到对应记录的,可以基于分支,提交,标签。

切提交和标签一般用来热修复或者老版本需要加新特性。

  1. git checkout dev
  2. git checkout origin/test
  3. git checkout --track origin/feature-test
  4. git checkout -b testbranch
  5. git checkout -- file
  6. git checkout .
  7. git checkout -

git commit

天天打交道的命令,这里说一些很常见的姿势

  1. git commit --amend --no-edit
  2. git commit --no-verify -m "xxx"
  3. git commit -m "xxx"
  4. git commit -t templateFile
  5. git commit -F

git reset

不得不说,代码回滚中这个命令也是用的很多,而且是 --hard

  1. git reset --hard commit_sha1
  2. git reset --soft commit_sha1
  3. git reset --soft HEAD~1
  4. git reset --mixed commit_sha1
  5. git reset --merge commit_sha1
  6. git reset --keep commit_sha1

git revert

一般用于master 的代码回滚,因为多人在上面协作,

revert 可以平稳的回滚代码,但却保留提交记录,不会让协作的人各种冲突

  1. git revert commit-sha1

git rebase

变基在项目中算是很频繁的,为什么这么说。

比如你开发一个新的 feature, 遵循最小化代码提交的理念。

在整个功能开发完毕的时侯,会有非常多的 commit,用 rebase 可以让我们的commit记录很干净

  1. git rebase -i git-sha1|branch(HEAD)
  2. git rebase --continue
  3. git rebase --skip
  4. git rebase --abort

format_png 2

  • pick: 是保留该 commit(采用)
  • edit: 一般你提交的东西多了,可以用这个把东东拿回工作区拆分更细的 commit
  • reword: 这个可以重新修改你的 commit msg
  • squash: 内容保留,把提交信息往上一个 commit 合并进去
  • fixup: 保留变动内容,但是抛弃 commit msg
  • drop: 用的比较少,无用的改动你会提交么!!!

突然发现截图还有几个新的行为,估计是新版本带来的,

从字面上就可以看出来大体的意思, 就是把回滚和打标签这些放到变基中简化操作。

温馨提示:

  • 本地提交之前,最好把基准点变为需要合并的分支,这样提交 PR/MR 的时侯就不会冲突(本地来解决冲突)
  • 不要在公共分支上变基!!!一变其他协作者基本都一堆冲突!除非你们有很清晰的分支管理机制

git merge

  1. git merge --no-ff branchName

git pull

git pull中用的最多是带--rebase(-r)的方式(变基形式拉取合并代码),保持分支一条线。

默认的pull会走ff模式,多数情况会产生新的commit,部分参数与 merge提供一致。

git push

当本地分支存在,远程分支不存在的时侯,可以这样推送关联的远程分支

  1. git push origin localbranch
  2. git push -d origin branchName
  3. git push --tags
  4. git push --follow-tags
  5. git push -f origin branchName
  6. git push --force-with-lease

git remote

这个东西用在你需要考虑维护多个地方仓库的时侯会考虑,或者修改仓库源的时侯

  1. git remote add origin url
  2. git remote add github url
  3. git remote set-url origin(或者其他上游域) url

git branch

该命令用的最多的就是删除本地分支,重命名分支,删除远程分支了

  1. git branch -d branchName
  2. git branch -M oldBranch newNameBranch
  3. git branch --set-upstream-to=origin/xxx
  4. git branch --set-upstream-to origin xxx

git stash

暂存用的最多时侯就是你撸代码撸到一半,突然说有个紧急 BUG 要修正。

或者别人在你这里需要帮忙排查代码,你这时候也会用到。

强烈建议给每个 stash 添加描述信息!!!

  1. git stash save stashName
  2. git stash -u save stashName
  3. git stash push -m "更改了 xx"
  4. git stash apply stash@{0}
  5. git stash pop stash@{0}
  6. git stash list
  7. git stash clear
  8. git stash drop stash@{0}
  9. git stash show stash@{0}

git reflog

这个命令的强大之处,是记录了所有行为,包括你 rebase,merge, reset 这些

当我们不小心硬回滚的时侯,或变基错了都可以在这里找到行为之前的commit,然后回滚。

当然这个时间回溯也只在本地有用,你推送到远程分支的破坏性改动,该凉还是得凉。

  1. git reflog -5

git cherry-pick

这个东西你可以理解为你去买橘子,你会专门挑一些符合心意的橘子放到购物篮中。

你可以从多个分支同时挑取部分需要的 commit 合并到同一个地方去,是不是贼骚。

这货和变基有点类似,但是仅仅类似,挑过来的 commit 若是没有冲突则追加。

有冲突会中断,解决后 --continue

  1. git cherry-pick commit-sha1
  2. git cherry-pick master~4 master~2
  3. git cherry-pick startGitSha1..endGitSha1

git rm

这个命令在旧的版本用的比较最多的姿势是为了重新索引.gitignore 的范围

  1. git rm --cache -- file
  2. git rm -r --cached .
  3. git add .
  4. git commit -m "xxx"

git rev-parse

这个估计一般人用的不是很多,可以通过这个快速获取部分git 仓库的信息

我在弄脚本的时侯就会从这里拿东西

  1. git rev-parse --short HEAD --verify
  2. git rev-parse --show-toplevel
  3. git rev-parse --git-dir
  4. git rev-parse --all

git diff

对于这个命令,在终端比对用的不是很频繁,除了少量改动的时侯可能会用这个看看。

其他情况下我更倾向于用 GUI 工具来看,因为比对更加直观。

总结

git 的常用命令其实很好掌握,很多命令都有 Linux 的影子。

列出来的命令都是高频使用的,或许有一些更骚的姿势没有摸索到,

有更好建议的,或者发现不对之处的请留言,会及时修正,谢谢阅读。

作者:CRPER

链接:juejin.im/post/5de8d849e51d455808332166

欢迎点击阅读原文访问作者博客。本文由公众号(Java后端)编辑,转载请著名且保留出处。

有偿投稿:欢迎投稿原创技术博文,一旦采用将给予 50元 - 200元 不等稿费, 要求个人原创,图文并茂。可以是职场经验、面试经历,也可是技术教程,学习笔记。投稿请联系微信「web527zsd」,备注投稿。


-END-

如果看到这里,说明你喜欢这篇文章,请转发**、点赞**。微信搜索「web_resource」,欢迎添加小编微信「focusoncode」,每日朋友圈更新一篇高质量技术博文(无广告)。

↓扫描二维码添加小编↓

format_png 3

推**读**

1. 一个依赖搞定 Session 共享

2. 用好 Java 中的枚举,真的没有那么简单!

3. 互联网公司的技术架构

4. 浅谈 Web 网站架构演变过程

format_png 4

发表评论

表情:
评论列表 (有 0 条评论,419人围观)

还没有评论,来说两句吧...

相关阅读

    相关 git 使用命令

     一: 1. git add 添加 多余文件  这样的错误是由于, 有的时候 可能 git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

    相关 高频使用 Git 命令

    ![format_png][] 前言 汇总下我在项目中高频使用的git命令及姿势。 不是入门文档,官方文档肯定比我全面,这里是结合实际业务场景输出。 使用的