GitHub秘籍,为你解读Git与Github酷而少知的功能
GitHub忽略空白字符变化在任意diff页面的URL后加上?w=1,可以去掉那些只是空白字符的变化,使你能更专注于代码的变化。 调整Tab字符所代表的空格数在diff或者file页面的URL后面加上?ts=4,这样当显示tab字符的长度时就会是4个空格的长度,不再是默认的8个空格。ts后面的数字还可以根据你个人的偏好进行修改。不过,这个小诀窍在Gists页面和raw file页面不起作用。 下面是我们在Go语言的source file页面URL后加?ts=4前的例子: 然后是我们添加?ts=4后的例子: 查看某个用户的Commit历史查看某个用户的所有提交历史,只需在commits页面URL后加上?author=username。 克隆某个仓库当我们克隆某一资源时,可以不要那个.git后缀。
分支将某个分支与其他所有分支进行对比当你点击某个仓库的分支(Branches)选项卡时
你会看到一个包含所有未合并的分支的列表。 你可以在这里查看比较(Compare)页面或点击删除某个分支。 有的时候我们需要将多个分支与一个非主分支(master)进行对比,此时可以通过在URL后加入要比较的分支名来实现:
可以在URL后加上?merged=1来查看已经合并了的分支。 你可以使用这个界面来替代命令行直接删除分支。 比较分支如果我们想要比较两个分支,可以像下面一样修改URL: 其中{range} = master…4-1-stable 例如: {range}还可以使用下面的形式:
日期格式 YYYY-DD-MM …这样你就能查看master分支上一段时间或者指定日期内的改动。 比较不同派生库的分支想要对派生仓库(Forked Repository)之间的分支进行比较,可以像下面这样修改URL实现:
例如: GistsGists 给我们提供了一种不需要创建一个完整的仓库,使小段代码也可以工作的简单方式。 Gist的URL后加上.pibb,可以得到更适合嵌入到其他网站的HTML版本。 Gists还可以像任何标准仓库一样被克隆。
This means you can also modify and update Gists:
Git.ioGit.io是Github的短网址服务。 你可以通过Curl命令以普通HTTP协议使用它:
键盘快捷键在仓库主页上提供了快捷键方便快速导航。
按?查看当前页面支持的快捷键列表: 整行高亮在代码文件地址后加上#L52或者单击行号52都会将第52行代码高亮显示。 多行高亮也可以,比如用#L53-L60选择范围,或者按住 shift键,然后再点击选择的两行。 用commit信息关闭Issue如果某个提交修复了一个Issue,当提交到master分支时,提交信息里可以使用fix/fixes/fixed, close/closes/closed 或者 resolve/resolves/resolved等关键词,后面再跟上Issue号,这样就会关闭这个Issue。
这将会关闭Issue #12,并且在Issue讨论列表里关联引用这次提交。 链接其他仓库的Issue如果你想引用到同一个仓库中的一个Issue,只需使用井号 # 加上Issue号,这样就会自动创建到此Issue的链接。 要链接到其他仓库的Issue,就使用user_name/repo_name#ISSUE_NUMBER的方式,例如tiimgreen/toc#12。 设置CI对每条Pull Request都进行构建如果配置正确,Travis CI会为每个你收到的Pull Request执行构建,就像每次提交也会触发构建一样。想了解更多关于Travis CI的信息,请看 Travis CI入门。 Markdown文件高亮语法例如,可以像下面这样在你的Markdown文件里为Ruby代码添加语法高亮:
效果像下面这样:
Github使用 Linguist 做语言识别和语法高亮。你可以仔细阅读 languages YAML file,了解有哪些可用的关键字。 进一步了解 GitHub Flavored Markdown. 表情符可以在Pull Requests, Issues, 提交消息, Markdown文件里加入表情符。使用方法:name_of_emoji:
将输出一个笑脸: Github支持的完整表情符号列表详见emoji-cheat-sheet.com 或 scotch-io/All-Github-Emoji-Icons。 Github上使用最多的5个表情符号是: 静态与动态图片注释和README等文件里也可以使用图片和GIF动画: 仓库中的原始图片可以被直接调用:
所有图片都缓存在Gitub,不用担心你的站点不能访问时就看不到图片了。 在GitHub Wiki中嵌入图片有多种方法可以在Wiki页面里嵌入图片。既可以像上一条里那样使用标准的Markdown语法,也可以像下面这样指定图片的高度或宽度:
结果: 快速引用在注释话题里引用之前某个人所说的,只需选中文本,然后按 r键,想要的就会以引用的形式复制到你的输入框里。 快速添加许可证创建一个仓库时,Github会为你提供一个预置的软件许可列表: 对于已有的仓库,可以通过web界面创建文件来添加软件许可。输入LICENSE作为文件名后,同样可以从预置的列表中选择一个作为模板。 这个技巧也适用于 .gitignore 文件。 任务列表Issues和Pull requests里可以添加复选框,语法如下(注意空白符):
当项目被选中时,它对应的Markdown源码也被更新了:
Markdown文件中的任务列表在完全适配Markdown语法的文件中可以使用以下语法加入一个只读的任务列表
相对链接Markdown文件里链接到内部内容时推荐使用相对链接。
绝对链接会在URL改变时(例如重命名仓库、用户名改变,建立分支项目)被更新。使用相对链接能够保证你的文档不受此影响。 GitHub Pages的元数据与插件支持在Jekyll页面和文章里,仓库信息可在 site.github 命名空间下找到,也可以显示出来,例如,使用 {{ site.github.project_title }}显示项目标题。 Jemoji和jekyll-mentions插件为你的Jekyll文章和页面增加了emoji和@mentions功能。 查看YAML格式的元数据许多博客站点,比如基于Jekyll的GitHub Pages,都依赖于一些文章头部的YAML格式的元数据。Github会将其渲染成一个水平表格,方便阅读。 渲染表格数据GitHub支持将 .csv (comma分隔)和.tsv (tab分隔)格式的文件渲染成表格数据。 撤销Pull Request可以通过Pull Request中的Revert按钮来撤销一个已合并的Pull Request中的commit。按下按钮后会自动生成一个进行逆向操作的Pull Request。 Diffs可渲染文档的Diffs提交和Pull Requests里包含有Github支持的可渲染文档(比如Markdown)会提供source 和 rendered两个视图功能。 点击 “rendered” 按钮,看看改动在渲染后的显示效果。当你添加、删除或修改文本时,渲染纯文本视图非常方便。 可变化地图当你在GitHub上查看一个包含地理数据的提交或pull request时,Github可以显示数据变动的视觉表示。 在diff中折叠与扩展代码你可以通过点击diff边栏里的 unfold 按钮来多显示几行上下文。你可以一直点击 unfold 按钮直到显示了文件的全部内容。这个功能在所有GitHub产生的diff界面都可以使用。 查看Pull Request的diff和patch在Pull Request的URL后面加上 .diff 或 .patch 的扩展名就可以得到它的diff或patch文件,例如: .diff 扩展会使用普通文本格式显示如下内容:
渲染图像发生的变动GitHub可以显示包括PNG、JPG、GIF、PSD在内的多种图片格式并提供了几种方式来比较这些格式的图片文件版本间的不同。 HubHub是一个对Git进行了封装的命令行工具,可以帮助你更方便的使用Github。 这使得你可以像下面这样进行克隆:
贡献内容的自动检查假设你想人们使用你的项目并给你的项目做出贡献,你往往需要回答他们常见问题。这个项目是干什么用的?我如何使用它?允许我怎样使用?我如何为项目出力?我怎样配置开发环境?我怎么能保证新功能不会破坏已有的功能? Friction是一个命令行脚本,用来检查你的项目是否回答了这些问题。下面是示例输出: Friction 支持 MRI 2.1.0, MRI 2.0.0 和 MRI 1.9.3. 贡献者指南在你的仓库的根目录添加一个名为 CONTRIBUTING 的文件后,贡献者在新建Issue或Pull Request时会看到这个文件的链接。 GitHub资源
GitHub讨论
Git前一个分支快速检出上一个分支:
Stripspace命令Git Stripspace命令可以:
使用此命令时必须传入一个文件,像这样:
检出Pull RequestsPull Request是一种GitHub上可以通过以下多种方式在本地被检索的特别分支: 检索某个分支并临时储存在本地的FETCH_HEAD中以便快速查看更改(diff)以及合并(merge):
通过refspec获取所有的Pull Request为本地分支:
或在仓库的.git/config中加入下列设置来自动获取远程仓库中的Pull Request
对基于派生库的Pull Request,可以通过先checkout代表此Pull Request的远端分支再由此分支建立一个本地分支:
操作多个仓库的时候,可以在Git中设置获取Pull Request的全局选项。
此时可以在任意仓库中使用以下命令:
提交空改动可以使用–allow-empty选项强制创建一个没有任何改动的提交:
这样做在如下几种情况下是有意义的:
更直观的Git Status在命令行输入如下命令:
可以看到: 加上-sb选项:
这回得到: 更直观的Git Log输入如下命令:
可以看到: 这要归功于Palesz在stackoverflow的回答。 这个命令可以被用作别名,详细做法见这里。 Git查询Git查询运行你在之前的所有提交信息里进行搜索,找到其中和搜索条件相匹配的最近的一条。
这里 query (区别大小写)是你想要搜索的词语, 这条命令会找到包含这个词语的最后那个提交并显示变动详情。
合并分支输入命令:
这会显示所有已经合并到你当前分支的分支列表。 相反地:
会显示所有还没有合并到你当前分支的分支列表。 使用网页查看本地仓库使用Git的 instaweb 可以立即在 gitweb中浏览你的工作仓库。这个命令是个简单的脚步,配置了gitweb和用来浏览本地仓库的Web服务器。(译者注:默认需要lighttpd支持)
执行后打开: Git配置所有Git配置都保存在你的.gitconfig 文件中。 Git命令自定义别名别名用来帮助你定义自己的git命令。比如你可以定义 git a 来运行 git add –all。 要添加一个别名, 一种方法是打开 ~/.gitconfig 文件并添加如下内容:
…或者在命令行里键入:
例如:
指向多个命令的别名可以用引号来定义:
下面列出了一些有用的别名:
自动更正如果键入 git comit 你会看到如下输出:
为了在键入 comit 调用 commit命令,只需启用自动纠错功能:
现在你就会看到:
带颜色输出要在你的Git命令输出里加上颜色的话,可以用如下命令:
Git资源
Git参考书籍
|