你是否有过破坏了某个文件,想要从新开始?
或者须要的文件在另外一个分支中?
下面的命令让你直接从某个分支取到那个文件。html
git checkout some-other-branch -- yarn.lock
你也能够从某个 commit 中取到 yarn.lock 文件git
git checkout 9146467 -- yarn.lock
相比 cherry-pick
拿到某个 commit 的全部文件,这个技巧能够只拿到想要的那一个文件。浏览器
使用 merge 合并时会产生一个新的提交,有时候这个提交很烦人。若是你想要查看日志时过滤掉这些合并的提交,可使用如下命令:bash
git log --oneline --no-merges
若是你最近的一次提交中,commit 信息写的很差或者有错别字,能够用如下命令修改:ide
git commit -v --amend
这里的 -v
是可选的,它能够提过一些额外信息来帮助你描述 commit messageui
首先来解释一个概念:
若是你建立了一个新文件,这个文件以前不存在于 git 历史中,那么这个文件就是一个未跟踪的变动。为了跟踪这个文件,你须要将它提交到 git 中。spa
若是使用 git checkout .
则会清除全部已经跟踪的变动。而使用如下命令能够清除全部未跟踪的变动:日志
git clean -f -d
使用如下命令能够打印出可视化的 logcode
git log --pretty=oneline --graph --decorate --all
(译者注:凑合看,跟 sourcetree 的仍是不能比~)htm
此命令能够向 Git 查询在两个 commit 之间,都有谁作了哪些变动,看起来就像一个 changelog 同样
git shortlog <commit>..HEAD
上面的 <commit>
填写 commit 的 hash 值,就能够查出该 commit 和 HEAD 之间的变化,其中 ..
后面的 HEAD
也能够省略
你也能够用 git shortlog HEAD~20..
取最近 20 个 commit 的记录
你可能须要查询某两天之间的 git log,这时能够用 git log
命令配合 --since
与 --util
标识符
假如你想要查询 2016年2月10日 至 2016年2月19日 之间的日志,你能够运行:
git log --since='FEB 10 2016' --until='FEB 19 2016'
有时候你可能忘记了以前设置的 git 别名,下面的命令虽不是 git 的功能,可是却能帮你找到全部的 git 别名
git config -l | grep alias | sed 's/^alias\.//g'
若是你知道要找的代码具体写的是什么,或者知道某个特别的关键字,你就能够用它来搜索。
git log -S"config.menu_items"
本例中会查找全部包含 config.menu_items
的提交
git help -g
能够看到相似下面的 git 教程列表,经过 git help <concept>
便可在浏览器打开指定的教程网页,左边那一列即为 <concept>
名称
The common Git guides are: attributes 定义 Git 路径的属性 everyday 天天学点有用的 Git 命令 glossary 一个 Git 词汇表 ignore 指定 Git 忽略文件 modules 定义 Git 子模块 revisions 指定 Git 的修订版和范围 tutorial Git 的教程介绍 (for version 1.5.1 or newer) workflows 一个推荐的 Git 工做流概述
欢迎关注个人公众号:码力全开(codingonfire)