GitHub秘籍 GitHub秘籍 本秘籍收录了⼀些 Git和 Github⾮常酷同时⼜少有⼈知的功能。灵感来⾃于 Zach Holman在 2012年 Aloha Ruby Conference和 2013年 WDCNZ上所做的演讲: Git and GitHub Secrets(slides)和 More Git and GitHub Secrets(slides)。 Read this in other languages: English, 한국어, ⽇本語 , 简体中⽂ . ⺫录 GitHub 忽略空⽩字符变化 调整 Tab字符所代表的空格数 查看某个⽤户的 Commit历史 克隆某个仓库 将某个分⽀与其他所有分⽀进⾏对⽐ ⽐较分⽀ ⽐较不同派⽣库的分⽀ Gists Git.io 键盘快捷键 整⾏⾼亮 ⽤ commit信息关闭 Issue 链接其他仓库的 Issue 设置 CI对每条 Pull Request都进⾏构建 Markdown⽂件⾼亮语法 表情符 静态与动态图⽚ 在 GitHub Wiki中嵌⼊图⽚ 快速引⽤ 快速添加许可证 任务列表 Markdown⽂件中的任务列表 相对链接 GitHub Pages的元数据与插件⽀持 查看 YAML格式的元数据 渲染表格数据 Diffs 可渲染⽂档的 Diffs 可变化地图 在 diff中折叠与扩展代码 查看 Pull Request的 diff和 patch 渲染图像发⽣的变动 Hub 贡献内容的⾃动检查 贡献者指南 GitHub资源 GitHub讨论 Git 前⼀个分⽀ Stripspace命令 检出 Pull Requests 提交空改动 :trollface: 更直观的 Git Status 更直观的 Git Log Git查询 合并分⽀ 使⽤⺴⻚查看本地仓库 Git配置 Git命令⾃定义别名 ⾃动更正 带颜⾊输出 Git资源 Git参考书籍 GitHub 忽略空⽩字符变化 在任意 diff⻚⾯的 URL后加上 ?w=1,可以去掉那些只是空⽩字符的变化,使你能更专注于代码的变化。 详⻅ GitHub secrets. 调整 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。 https://github.com/rails/rails/commits/master?author=dhh 深⼊了解提交视图之间的区别 克隆某个仓库 当我们克隆某⼀资源时,可以不要那个 .git后缀。 $ git clone https://github.com/tiimgreen/github-cheat-sheet 更多对 Git clone 命令的介绍 . 将某个分⽀与其他所有分⽀进⾏对⽐ 当你点击某个仓库的分⽀( Branches)选项卡时 https://github.com/{user}/{repo}/branches 你会看到⼀个包含所有未合并的分⽀的列表。 你可以在这⾥查看⽐较( Compare)⻚⾯或点击删除某个分⽀。 有的时候我们需要将多个分⽀与⼀个⾮主分⽀( master)进⾏对⽐,此时可以通过在 URL后加⼊要⽐较的分⽀名来实现: https://github.com/{user}/{repo}/branches/{branch} 可以在 URL后加上 ?merged=1来查看已经合并了的分⽀。 你可以使⽤这个界⾯来替代命令⾏直接删除分⽀。 ⽐较分⽀ 如果我们想要⽐较两个分⽀,可以像下⾯⼀样修改 URL: https://github.com/user/repo/compare/{range} 其中 {range} = master...4-1-stable 例如: https://github.com/rails/rails/compare/master...4-1-stable {range}还可以使⽤下⾯的形式 : https://github.com/rails/rails/compare/master@{1.day.ago}...master https://github.com/rails/rails/compare/master@{2014-10-04}...master ⽇期格式 YYYY-DD-MM ...这样你就能查看 master分⽀上⼀段时间或者指定⽇期内的改动。 了解更多关于⽐较跨时间段的提交记录 . ⽐较不同派⽣库的分⽀ 想要对派⽣仓库( Forked Repository)之间的分⽀进⾏⽐较,可以像下⾯这样修改 URL实现: https://github.com/user/repo/compare/{foreign-user}:{branch}...{own-branch} 例如: https://github.com/rails/rails/compare/byroot:master...master Gists Gists 给我们提供了⼀种不需要创建⼀个完整的仓库,使⼩段代码也可以⼯作的简单⽅式。 Gist的 URL后加上 .pibb,可以得到更适合嵌⼊到其他⺴站的 HTML版本。 Gists还可以像任何标准仓库⼀样被克隆。 $ git clone https://gist.github.com/tiimgreen/10545817 进⼀步了解如何创建 gists. Git.io Git.io是 Github的短⺴址服务。 你可以通过 Curl命令以普通 HTTP协议使⽤它: $ curl -i http://git.io -F "url=https://github.com/..." HTTP/1.1 201 Created Location: http://git.io/abc123 $ curl -i http://git.io/abc123 HTTP/1.1 302 Found Location: https://github.com/... 进⼀步了解 Git.io. 键盘快捷键 在仓库主⻚上提供了快捷键⽅便快速导航。 按 t 键会打开⼀个⽂件浏览器。 按 w 键会打开分⽀选择菜单。 按 s 键会激活顶端的命令栏 (Command Bar)。 按 l 键编辑 Issue列表⻚的标签。 查看⽂件内容时 (如: https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md),按 y 键将会冻结这个⻚⾯, 这样就算代码被修改了也不会影响你当前看到的。 按 ?查看当前⻚⾯⽀持的快捷键列表: 进⼀步了解如何使⽤ Command Bar. 整⾏⾼亮 在代码⽂件地址后加上 #L52或者单击⾏号 52都会将第 52⾏代码⾼亮显⽰。 多⾏⾼亮也可以,⽐如⽤ #L53-L60选择范围,或者按住 shift键,然后再点击选择的两⾏。 https://github.com/rails/rails/blob/master/activemodel/lib/active_model.rb#L53-L60 ⽤ commit信息关闭 Issue 如果某个提交修复了⼀个 Issue,当提交到 master分⽀时,提交信息⾥可以使⽤ fix/fixes/fixed,close/closes/closed 或者 resolve/resolves/resolved等关键词,后⾯再跟上 Issue号,这样就会关闭这个 Issue。 $ git commit -m "Fix screwup, fixes #12" 这将会关闭 Issue #12,并且在 Issue讨论列表⾥关联引⽤这次提交。 进⼀步了解通过提交信息关闭 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⼊⻔ 。 进⼀步了解 Commit status API. Markdown⽂件⾼亮语法 例如,可以像下⾯这样在你的 Markdown⽂件⾥为 Ruby代码添加语法⾼亮: ```ruby require 'tabbit' table = Tabbit.new('Name', 'Email') table.add_row('Tim Green', 'tiimgreen@gmail.com') puts table.to_s ``` 效果像下⾯这样: require 'tabbit' table = Tabbit.new('Name', 'Email') table.add_row('Tim Green', 'tiimgreen@gmail.com') puts table.to_s Github使⽤ Linguist 做语⾔识别和语法⾼亮。你可以仔细阅读 languages YAML file,了解有哪些可⽤的关键字。 进⼀步了解 GitHub Flavored Markdown. 表情符 可以在 Pull Requests, Issues, 提交消息 , Markdown⽂件⾥加⼊表情符。使⽤⽅法 :name_of_emoji: :smile: 将输出⼀个笑脸: :smile: Github⽀持的完整表情符号列表详⻅ emoji-cheat-sheet.com 或 scotch-io/All-Github-Emoji-Icons。 Github上使⽤最多的 5个表情符号是: 1. :shipit: - :shipit: 2. :sparkles: - :sparkles: 3. :-1: - :-1: 4. :+1: - :+1: 5. :clap: - :clap: 静态与动态图⽚ 注释和 README等⽂件⾥也可以使⽤图⽚和 GIF动画: ![Alt Text](http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif) 所有图⽚都缓存在 Gitub,不⽤担⼼你的站点不能访问时就看不到图⽚了。 在 GitHub Wiki中嵌⼊图⽚ 有多种⽅法可以在 Wiki⻚⾯⾥嵌⼊图⽚。既可以像上⼀条⾥那样使⽤标准的 Markdown语法,也可以像下⾯这样指定图⽚的⾼度或宽 度: [[ http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif | height = 100px ]] 结果: 快速引⽤ 在注释话题⾥引⽤之前某个⼈所说的,只需选中⽂本,然后按 r键,想要的就会以引⽤的形式复制到你的输⼊框⾥。 进⼀步了解快速引⽤ . 快速添加许可证 创建⼀个仓库时, Github会为你提供⼀个预置的软件许可列表: 对于已有的仓库,可以通过 web界⾯创建⽂件来添加软件许可。输⼊ LICENSE作为⽂件名后,同样可以从预置的列表中选择⼀个作为模 板。 这个技巧也适⽤于 .gitignore ⽂件。 进⼀步了解 open source licensing. 任务列表 Issues和 Pull requests⾥可以添加复选框,语法如下(注意空⽩符): - [ ] Be awesome - [ ] Prepare dinner - [ ] Research recipe - [ ] Buy ingredients - [ ] Cook recipe - [ ] Sleep 当项⺫被选中时,它对应的 Markdown源码也被更新了: - [x] Be awesome - [ ] Prepare dinner - [x] Research recipe - [x] Buy ingredients - [ ] Cook recipe - [ ] Sleep 进⼀步了解任务列表 . Markdown⽂件中的任务列表 在完全适配 Markdown语法的⽂件中可以使⽤以下语法加⼊⼀个 只读 的任务列表 - [ ] Mercury - [x] Venus - [x] Earth - [x] Moon - [x] Mars - [ ] Deimos - [ ] Phobos Mercury Venus Earth Moon Mars Deimos Phobos 进⼀步了解 Markdown⽂件中的任务列表 相对链接 Markdown⽂件⾥链接到内部内容时推荐使⽤相对链接。 [Link to a header](#awesome-section) [Link to a file](docs/readme) 绝对链接会在 URL改变时(例如重命名仓库、⽤户名改变,建⽴分⽀项⺫)被更新。使⽤相对链接能够保证你的⽂档不受此影响。 进⼀步了解相对链接 . GitHub Pages的元数据与插件⽀持 在 Jekyll⻚⾯和⽂章⾥,仓库信息可在 site.github 命名空间下找到,也可以显⽰出来,例如,使⽤ {{ site.github.project_title }} 显⽰项⺫标题。 Jemoji和 jekyll-mentions插件为你的 Jekyll⽂章和⻚⾯增加了 emoji和 @mentions功能。 了解更多 GitHub Pages的元数据和插件⽀持 . 查看 YAML格式的元数据 许多博客站点,⽐如基于 Jekyll的 GitHub Pages,都依赖于⼀些⽂章头部的 YAML格式的元数据。 Github会将其渲染成⼀个⽔平表格, ⽅便阅读。 进⼀步了解 在⽂档⾥查看 YAML元数据 . 渲染表格数据 GitHub⽀持将 .csv (comma分隔 )和 .tsv (tab分隔 )格式的⽂件渲染成表格数据。 进⼀步了解渲染表格数据 . Diffs 可渲染⽂档的 Diffs 提交和 Pull Requests⾥包含有 Github⽀持的可渲染⽂档(⽐如 Markdown)会提供 source 和 rendered 两个视图功能。 点击 "rendered" 按钮,看看改动在渲染后的显⽰效果。当你添加、删除或修改⽂本时,渲染纯⽂本视图⾮常⽅便。 进⼀步了解渲染纯⽂本视图 Diffs. 可变化地图 当你在 GitHub上查看⼀个包含地理数据的提交或 pull request时, Github可以显⽰数据变动的视觉表⽰。 进⼀步了解可⽐较地图 . 在 diff中折叠与扩展代码 你可以通过点击 diff边栏⾥的 unfold 按钮来多显⽰⼏⾏上下⽂。你可以⼀直点击 unfold 按钮直到显⽰了⽂件的全部内容。这个功能在所 有 GitHub产⽣的 diff界⾯都可以使⽤。 进⼀步了解扩展 Diff上下⽂ . 查看 Pull Request的 diff和 patch 在 Pull Request的 URL后⾯加上 .diff 或 .patch 的扩展名就可以得到它的 diff或 patch⽂件,例如: https://github.com/tiimgreen/github-cheat-sheet/pull/15 https://github.com/tiimgreen/github-cheat-sheet/pull/15.diff https://github.com/tiimgreen/github-cheat-sheet/pull/15.patch .diff 扩展会使⽤普通⽂本格式显⽰如下内容: diff --git a/README.md b/README.md index 88fcf69..8614873 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ All the hidden and not hidden features of Git and GitHub. This cheat sheet was i - [Merged Branches](#merged-branches) - [Quick Licensing](#quick-licensing) - [TODO Lists](#todo-lists) +- [Relative Links](#relative-links) - [.gitconfig Recommendations](#gitconfig-recommendations) - [Aliases](#aliases) - [Auto-correct](#auto-correct) @@ -381,6 +382,19 @@ When they are clicked, they will be updated in the pure Markdown: - [ ] Sleep (...) 渲染图像发⽣的变动 GitHub可以显⽰包括 PNG、 JPG、 GIF、 PSD在内的多种图⽚格式并提供了⼏种⽅式来⽐较这些格式的图⽚⽂件版本间的不同。 查看更多关于渲染图像变动的内容 Hub Hub是⼀个对 Git进⾏了封装的命令⾏⼯具,可以帮助你更⽅便的使⽤ Github。 这使得你可以像下⾯这样进⾏克隆: $ hub clone tiimgreen/toc 查看更多 Hub提供的超酷命令 . 贡献内容的⾃动检查 假设你想⼈们使⽤你的项⺫并给你的项⺫做出贡献,你往往需要回答他们常⻅问题。这个项⺫是干什么⽤的?我如何使⽤它?允许我怎 样使⽤?我如何为项⺫出⼒?我怎样配置开发环境?我怎么能保证新功能不会破坏已有的功能? Friction是⼀个命令⾏脚本,⽤来检查你的项⺫是否 回答了这些问题 。下⾯是⽰例输出: Friction ⽀持 MRI 2.1.0, MRI 2.0.0 和 MRI 1.9.3. 贡献者指南 在你的仓库的根⺫录添加⼀个名为 CONTRIBUTING 的⽂件后,贡献者在新建 Issue或 Pull Request时会看到这个⽂件的链接。 进⼀步了解贡献者指南 . GitHub资源 Title Link GitHub Explore https://github.com/explore GitHub Blog https://github.com/blog GitHub Help https://help.github.com/ GitHub Training http://training.github.com/ GitHub Developer https://developer.github.com/ GitHub讨论 Title Link How GitHub Uses GitHub to Build GitHub https://www.youtube.com/watch?v=qyz3jkOBbQY Introduction to Git with Scott Chacon of GitHub https://www.youtube.com/watch?v=ZDR433b0HJY How GitHub No Longer Works https://www.youtube.com/watch?v=gXD1ITW7iZI Git and GitHub Secrets https://www.youtube.com/watch?v=Foz9yvMkvlA More Git and GitHub Secrets https://www.youtube.com/watch?v=p50xsL-iVgU Git 前⼀个分⽀ 快速检出上⼀个分⽀: $ git checkout - # Switched to branch 'master' $ git checkout - # Switched to branch 'next' $ git checkout - # Switched to branch 'master' 进⼀步了解 Git 分⽀ . Stripspace命令 Git Stripspace命令可以 : 去掉⾏尾空⽩符 多个空⾏压缩成⼀⾏ 必要时在⽂件末尾增加⼀个空⾏ 使⽤此命令时必须传⼊⼀个⽂件,像这样: $ git stripspace < README.md 进⼀步了解 Git stripspace 命令 . 检出 Pull Requests Pull Request是⼀种 GitHub上可以通过以下多种⽅式在本地被检索的特别分⽀: 检索某个分⽀并临时储存在本地的 FETCH_HEAD中以便快速查看更改 (diff)以及合并 (merge): $ git fetch origin refs/pull/[PR-Number]/head 通过 refspec获取所有的 Pull Request为本地分⽀: $ git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*' 或在仓库的 .git/config中加⼊下列设置来⾃动获取远程仓库中的 Pull Request [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@github.com:tiimgreen/github-cheat-sheet.git [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = git@github.com:tiimgreen/github-cheat-sheet.git fetch = +refs/pull/*/head:refs/remotes/origin/pr/* 对基于派⽣库的 Pull Request,可以通过先 checkout代表此 Pull Request的远端分⽀再由此分⽀建⽴⼀个本地分⽀: $ git checkout pr/42 pr-42 进⼀步了解如何检出 pull request到本地 . 提交空改动 :trollface: 可以使⽤ --allow-empty选项强制创建⼀个没有任何改动的提交: $ git commit -m "Big-ass commit" --allow-empty 这样做在如下⼏种情况下是有意义的: 标记⼀批⼯作或⼀个新功能的开始。 记录你对项⺫进⾏了跟代码⽆关的改动。 跟使⽤你仓库的其他⼈交流。 作为仓库的第⼀次提交,因为第⼀次提交⽇后是不能被 rebase的: git commit -m "init repo" --allow-empty. 更直观的 Git Status 在命令⾏输⼊如下命令 : $ git status 可以看到 : 加上 -sb选项 : $ git status -sb 这回得到 : 进⼀步了解 Git status 命令 . 更直观的 Git Log 输⼊如下命令 : 可以看到 : $ git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' 这要归功于 Palesz在 stackoverflow的回答。 这个命令可以被⽤作别名,详细做法⻅ 这⾥ 。 进⼀步了解 Git log 命令 . Git查询 Git查询运⾏你在之前的所有提交信息⾥进⾏搜索,找到其中和搜索条件相匹配的最近的⼀条。 $ git show :/query 这⾥ query (区别⼤⼩写)是你想要搜索的词语, 这条命令会找到包含这个词语的最后那个提交并显⽰变动详情。 $ git show :/typo 按 q 键退出命令。 * 合并分⽀ 输⼊命令 : $ git branch --merged 这会显⽰所有已经合并到你当前分⽀的分⽀列表。 相反地: $ git branch --no-merged 会显⽰所有还没有合并到你当前分⽀的分⽀列表。 进⼀步了解 Git branch 命令 . 使⽤⺴⻚查看本地仓库 使⽤ Git的 instaweb 可以⽴即在 gitweb中浏览你的⼯作仓库。这个命令是个简单的脚步,配置了 gitweb和⽤来浏览本地仓库的 Web服务 器。 (译者注:默认需要 lighttpd⽀持) $ git instaweb 执⾏后打开: 进⼀步了解 Git instaweb 命令 . Git配置 所有 Git配置都保存在你的 .gitconfig ⽂件中。 Git命令⾃定义别名 别名⽤来帮助你定义⾃⼰的 git命令。⽐如你可以定义 git a 来运⾏ git add --all。 要添加⼀个别名, ⼀种⽅法是打开 ~/.gitconfig ⽂件并添加如下内容: [alias] co = checkout cm = commit p = push # Show verbose output about tags, branches or remotes tags = tag -l branches = branch -a remotes = remote -v ...或者在命令⾏⾥键⼊: $ git config --global alias.new_alias git_function 例如: $ git config --global alias.cm commit 指向多个命令的别名可以⽤引号来定义: $ git config --global alias.ac 'add -A . && commit' 下⾯列出了⼀些有⽤的别名: 别名 Alias 命令 Command 如何设置 What to Type git cm git commit git config --global alias.cm commit git co git checkout git config --global alias.co checkout git ac git add . -A git commit git config --global alias.ac '!git add -A && git commit' git st git status -sb git config --global alias.st 'status -sb' git tags git tag -l git config --global alias.tags 'tag -l' git branches git branch -a git config --global alias.branches 'branch -a' git remotes git remote -v git config --global alias.remotes 'remote -v' git lg git log --color --graph -- pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- git config --global alias.lg "log --color --graph -- pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit - -" ⾃动更正 如果键⼊ git comit 你会看到如下输出: $ git comit -m "Message" # git: 'comit' is not a git command. See 'git --help'. # Did you mean this? # commit 为了在键⼊ comit 调⽤ commit命令,只需启⽤⾃动纠错功能: $ git config --global help.autocorrect 1 现在你就会看到: $ git comit -m "Message" # WARNING: You called a Git command named 'comit', which does not exist. # Continuing under the assumption that you meant 'commit' # in 0.1 seconds automatically... 带颜⾊输出 要在你的 Git命令输出⾥加上颜⾊的话,可以⽤如下命令: $ git config --global color.ui 1 进⼀步了解 Git config 命令 . Git资源 Title Link Official Git Site http://git-scm.com/ Official Git Video Tutorials http://git-scm.com/videos Code School Try Git http://try.github.com/ Introductory Reference & Tutorial for Git http://gitref.org/ Official Git Tutorial http://git-scm.com/docs/gittutorial Everyday Git http://git-scm.com/docs/everyday Git Immersion http://gitimmersion.com/ Ry's Git Tutorial http://rypress.com/tutorials/git/index.html Git for Designer http://hoth.entp.com/output/git_for_designers.html Git for Computer Scientists http://eagain.net/articles/git-for-computer-scientists/ Git Magic http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git参考书籍 Title Link Pragmatic Version Control Using Git http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git Pro Git http://git-scm.com/book Git Internals Peepcode http://peepcode.com/products/git-internals-pdf Git in the Trenches http://cbx33.github.com/gitt/ Version Control with Git http://www.amazon.com/Version-Control-Git-collaborative-development/dp/1449316387 Pragmatic Guide to Git http://www.pragprog.com/titles/pg_git/pragmatic-guide-to-git Git: Version Control for Everyone http://www.packtpub.com/git-version-control-for-everyone/book
还剩22页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

wangsen13

贡献于2015-12-26

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf