1.从分支中检出单个文件您是否曾经破坏过文件并想重新开始?或者所需的文件在另一个分支中?以下命令可让您直接从分支中获取该文件。gitcheckoutsome-other-branch--yarn.lock你也可以从一个commit中获取yarn.lock文件gitcheckout9146467--yarn.lock获取一个commit的所有文件相比cherry-pick,这个技巧你只能得到你想要的一个文件。2.查看日志时,过滤掉mergecommits使用merge进行合并时,会产生一个新的commit。有时这个提交很烦人。如果想在查看日志的时候过滤掉这些合并的提交,可以使用如下命令:gitlog--oneline--no-merges3.重写上次的提交信息ok或者有错字,可以使用下面修改命令:gitcommit-v--amend这里的-v是可选的,它可以提一些额外的信息来帮助你描述提交信息4.清除所有未跟踪的更改首先解释一个概念:如果你创建了一个没有'的新文件'之前git历史记录中不存在该文件是未跟踪的更改。为了跟踪这个文件,你需要将它提交到git。如果你使用gitcheckout。将清除所有跟踪的更改。并使用以下命令清除所有未跟踪的更改:gitclean-f-d5。打印一个可视化日志使用如下命令打印一个可视化日志gitlog--pretty=oneline--graph--decorate--all(翻译作者注:随便看看,还是比不上sourcetree~)6.查询changelog从Git这个命令可以查询Git谁在两次提交之间做了什么变化,看起来像一个changeloggitshortlogabove..HEAD填写了commit的hash值,可以查出两者之间的变化提交和HEAD。其中..后面的HEAD也可以省略。也可以使用gitshortlogHEAD~20..获取最近的20条commit记录7.查询指定日期的log。您可能需要查询某两天之间的git日志。此时,您可以使用带有--since和--util标识符的gitlog命令。如果你想查询2016年2月10日到2016年2月19日之间的日志,你可以运行:gitlog--since='FEB102016'--until='FEB192016'8.有时列出所有git别名你可能忘记了之前设置的git别名。下面的命令虽然不是git的功能,但是可以帮你找到所有的git别名gitconfig-l|grep别名|sed's/^别名\.//g'9。Querycommitscontainingacertainkeyword如果你知道你要找的代码具体写了什么,或者知道一个特殊的关键字,你可以用它来搜索。gitlog-S"config.menu_items"在此示例中,将找到所有包含config.menu_items的提交。10、终极技能githelp-g可以看到类似下面的git教程列表,可以在浏览器中使用githelp打开指定的教程页面,左边一栏是常用的Git指南有:attributes定义Git路径的属性everyday学习一些有用的Git命令GlossaryAGitglossaryignore指定Git忽略文件modulesDefineGitsubmodulesrevisions指定Gittutorial的版本和范围Gittutorialintroduction(forversion1.5.1ornewer)workflowsarecommendedGitworkflowoverview