请注意我有意跳过了 git commit、git pull/push 之类的基本命令,这份小抄的主题是 git 的一些「高级」用法。

导航 -- 跳到之前的分支
git checkout -
查看历史
# 每个提交在一行内显示
git log --oneline # 在所有提交日志中搜索包含「homepage」的提交
git log --all --grep='homepage' # 获取某人的提交日志
git log --author="Maxence"
哎呀:之前重置了一个不想保留的提交,但是现在又想要回滚?
# 获取所有操作历史
git reflog # 重置到相应提交
git reset HEAD@{4}
# ……或者……
git reset --hard <提交的哈希值>
哎哟:我把本地仓库搞得一团糟,应该怎么清理?
git fetch origin
git checkout master
git reset --hard origin/master
查看我的分支和 master 的不同
git diff master..my-branch
定制提交
# 编辑上次提交
git commit --amend -m "更好的提交日志" # 在上次提交中附加一些内容,保持提交日志不变git add . && git commit --amend --no-edit # 空提交 —— 可以用来重新触发 CI 构建
git commit --allow-empty -m "chore: re-trigger build"
squash 提交

比方说我想要 rebase 最近 3 个提交:

  • git rebase -i HEAD~3
  • 保留第一行的 pick,剩余提交替换为 squash 或 s
  • 清理提交日志并保存(vi 编辑器中键入 :wq 即可保存)
pick 64d26a1 feat: add index.js
s 45f0259 fix: update index.js
s 8b15b0a fix: typo in index.js
修正

比方说想在提交 fed14a4c 加上一些内容。

git 提交分支
git add .
git commit --fixup HEAD~1
# 或者也可以用提交的哈希值(fed14a4c)替换 HEAD~1 git rebase -i HEAD~3 --autosquash
# 保存并退出文件(VI 中输入 `:wq`)
rebase 的时候在每个提交上执行命令

如果特性很多,一个分支里可能有多个提交。如果测试失败了,你希望能找到导致测试失败的提交。这时候你可以使用 rebase --exec 命令在每个提交上执行命令。

# 在最近 3 个提交上运行 `npm test` 命令
git rebase HEAD~3 --exec "npm test"

暂存

暂存不止是 git stash 和 git stash pop ;

# 保存所有正在追踪的文件
git stash save "日志信息" # 列出所有的暂存项
git stash list # 获取并删除暂存项
git stash apply stash@{1}
git stash drop stash@{1}
# ……或使用一条命令……
git stash pop stash@{1}
清理
# 移除远程仓库上不存在的分支
git fetch -p # 移除所有包含 `greenkeeper` 的分支
git fetch -p && git branch --remote | fgrep greenkeeper | sed 's/^.\{9\}//' | xargs git push origin --delete
GitHub = Git + Hub

我把 Hub 当成 git 的一个封装来用。你如果也想这么做,可以设置一个别名:alias git='hub'

# 打开浏览器访问仓库 url(仅限 GitHub 仓库)git browse
额外福利:我最喜爱的 git 别名
alias g='git'
alias glog='git log --oneline --decorate --graph'
alias gst='git status'
alias gp='git push'
alias ga='git add'alias gc='git commit -v' #

Git 高级用法,你会了吗?的更多相关文章

  1. Git 高级用法,喜欢就拿去用

    如果你觉得 git 很迷惑人,那么这份小抄正是为你准备的! 请注意我有意跳过了 git commit.git pull/push 之类的基本命令,这份小抄的主题是 git 的一些「高级」用法. 导航 ...

  2. git高级用法

    1.git未保存的代码怎么切换分支? 2.两个分支的代码怎么合并?怎么解决冲突? 常见报错: 1.Merge failed : Some unreacked working tree files wo ...

  3. git高级用法之cheery-pick

    前言 想象一种情况,你在分支上开发多个功能,现在要将第一个功能推到另一个分支上 master 1_2 | dev \__3_4_5 例如上面的,先基于master创建了分支dev, 然后提交了3个co ...

  4. Git log高级用法

    格式化Log输出 首先,这篇文章会展示几种git log格式化输出的例子.大多数例子只是通过标记向git log请求或多或少的信息. 如果你不喜欢默认的git log格式,你可以用git config ...

  5. git log 高级用法

    转自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.3-Git-log%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95 内 ...

  6. 问题: 查看某个文件的修改记录| git log 高级用法

    参考文章: git查看某个文件的修改历史 5.3 Git log 高级用法 基本步骤 git log --pretty=oneline [文件名] git show [节点] git log 两周高级 ...

  7. Python彩蛋、字典、列表高级用法、元类、混入、迭代器、生成器、生成式、git

    一.类与类的关系 关注公众号"轻松学编程"了解更多. is-a 继承 继承是指一个类(称为子类.子接口)继承另外一个类(称为父类.父接口)的功能, 并可以增加它自己的新功能的能力. ...

  8. Git版本控制:Git高级教程

    http://blog.csdn.net/pipisorry/article/details/50669350 Git有很多命令行参数,使用起来非常方便.可以运行 man git log ,来看一下这 ...

  9. Jenkins高级用法 - Jenkinsfile 介绍及实战经验

    系列目录 1.Jenkins 安装 2.Jenkins 集群 3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile) 4 ...

随机推荐

  1. 11.QT-ffmpeg+QAudioOutput实现音频播放器

    1.前言      由于QAudioOutput支持的输入数据必须是原始数据,所以播放mp3,WAV,AAC等格式文件,需要解封装后才能支持播放.      而在QT中,提供了QMediaPlayer ...

  2. 性能测试1:loadrunner介绍及代理录制

    一.安装loadrunner lr安装环境要求: Lr11只支持ie9及一下,火狐30以下,不支持chrome.  操作系统只支持到win7.Lr打开时必须用管理员身份打开 在虚拟机中安装的win7, ...

  3. python基础:网络编程

    一.网络编程 简而言之,就是通过代码打开一个url,获得返回结果并做处理.通常所说的python爬虫,就属于网络编程 二.urllib模块进行网络编程 这个方法很繁琐,不建议使用.了解 示例1: 获取 ...

  4. Solaris – configure ftp server

    SUN Solaris FTPSUN Solaris comes with ftp daemon based on WU-FTPd Washington University project.Whil ...

  5. TNFE-Weekly[第七十二周已更新]

    前端行业发展飞速,新技术如雨后春笋般快速出现,尤其是各种小程序陆续推出,相关的信息.文章也铺天盖地的遍布在各处,我们有时候会困惑,不知道哪些信息对于自己是有价值的,那么TNFE-腾讯新闻前端团队启动了 ...

  6. oracle之二管理undo

    管理undo(PPT-I-299-309) 7.1 undo的作用(SMON) 使用undo tablespace 存放从datafiles 读出的数据块的前镜像,提供以下四种情况所需要的信息     ...

  7. Oracle闪回flashback

    参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...

  8. 血的教训!千万别在生产使用这些 redis 指令

    哎,最近小黑哥又双叒叕犯事了. 事情是这样的,前一段时间小黑哥公司生产交易偶发报错,一番排查下来最终原因是因为 Redis 命令执行超时. 可是令人不解的是,生产交易仅仅使用 Redis set 这个 ...

  9. C语言02

    C语言02 1.2 C语言与C程序 1.计算语言 语言发展 机器语言:机器语言是机器能直接识别的程序语言或指令代码,勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直 ...

  10. Node.js 从零开发 web server博客项目[登录]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...