Git资源
最后更新于:2022-04-02 01:05:49
| Title | Link |
| --- | --- |
| Official Git Site | [http://git-scm.com/](http://git-scm.com/) |
| Official Git Video Tutorials | [http://git-scm.com/videos](http://git-scm.com/videos) |
| Code School Try Git | [http://try.github.com/](http://try.github.com/) |
| Introductory Reference & Tutorial for Git | [http://gitref.org/](http://gitref.org/) |
| Official Git Tutorial | [http://git-scm.com/docs/gittutorial](http://git-scm.com/docs/gittutorial) |
| Everyday Git | [http://git-scm.com/docs/everyday](http://git-scm.com/docs/everyday) |
| Git Immersion | [http://gitimmersion.com/](http://gitimmersion.com/) |
| Ry's Git Tutorial | [http://rypress.com/tutorials/git/index.html](http://rypress.com/tutorials/git/index.html) |
| Git for Designer | [http://hoth.entp.com/output/git_for_designers.html](http://hoth.entp.com/output/git_for_designers.html) |
| Git for Computer Scientists | [http://eagain.net/articles/git-for-computer-scientists/](http://eagain.net/articles/git-for-computer-scientists/) |
| Git Magic | [http://www-cs-students.stanford.edu/~blynn/gitmagic/](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](http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git) |
| Pro Git | [http://git-scm.com/book](http://git-scm.com/book) |
| Git Internals Peepcode | [http://peepcode.com/products/git-internals-pdf](http://peepcode.com/products/git-internals-pdf) |
| Git in the Trenches | [http://cbx33.github.com/gitt/](http://cbx33.github.com/gitt/) |
| Version Control with Git | [http://www.amazon.com/Version-Control-Git-collaborative-development/dp/1449316387](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](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](http://www.packtpub.com/git-version-control-for-everyone/book)
|
';
Git配置
最后更新于:2022-04-02 01:05:46
所有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)%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)%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 命令.](http://git-scm.com/docs/git-config)
';
使用网页查看本地仓库
最后更新于:2022-04-02 01:05:44
使用Git的 `instaweb` 可以立即在 `gitweb` 中浏览你的工作仓库。这个命令是个简单的脚步,配置了 `gitweb` 和用来浏览本地仓库的Web服务器。 _(译者注:默认需要lighttpd支持)_
~~~
$ git instaweb
~~~
执行后打开:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a77997eba10.png)
[_进一步了解 Git `instaweb` 命令._](http://git-scm.com/docs/git-instaweb)
';
合并分支
最后更新于:2022-04-02 01:05:42
输入命令:
~~~
$ git branch --merged
~~~
这会显示所有已经合并到你当前分支的分支列表。
相反地:
~~~
$ git branch --no-merged
~~~
会显示所有还没有合并到你当前分支的分支列表。
[_进一步了解 Git `branch` 命令._](http://git-scm.com/docs/git-branch)
';
Git查询
最后更新于:2022-04-02 01:05:40
Git查询运行你在之前的所有提交信息里进行搜索,找到其中和搜索条件相匹配的最近的一条。
~~~
$ git show :/query
~~~
这里 `query` (区别大小写)是你想要搜索的词语, 这条命令会找到包含这个词语的最后那个提交并显示变动详情。
~~~
$ git show :/typo
~~~
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a77984f29d4.png)
* 按 `q` 键退出命令。*
';
更直观的Git Log
最后更新于:2022-04-02 01:05:38
输入如下命令:
~~~
$ git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset' --abbrev-commit --date=relative
~~~
可以看到:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a77972c70fb.png)
这要归功于 [Palesz](http://stackoverflow.com/users/88355/palesz) 在stackoverflow的回答。
这个命令可以被用作别名,详细做法见这里。
[_进一步了解 Git `log` 命令._](http://git-scm.com/docs/git-log)
';
更直观的Git Status
最后更新于:2022-04-02 01:05:35
在命令行输入如下命令:
~~~
$ git status
~~~
可以看到:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a7796711f03.png)
加上 `-sb` 选项:
~~~
$ git status -sb
~~~
这回得到:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a77967504bd.png)
[_进一步了解 Git `status` 命令._](http://git-scm.com/docs/git-status)
';
提交空改动 :trollface:
最后更新于:2022-04-02 01:05:33
可以使用 `--allow-empty` 选项强制创建一个没有任何改动的提交:
~~~
$ git commit -m "Big-ass commit" --allow-empty
~~~
这样做在如下几种情况下是有意义的:
* 标记一批工作或一个新功能的开始。
* 记录你对项目进行了跟代码无关的改动。
* 跟使用你仓库的其他人交流。
* 作为仓库的第一次提交,因为第一次提交日后是不能被rebase的: `git commit -m "init repo" --allow-empty` .
';
检出Pull Requests
最后更新于:2022-04-02 01:05:31
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
~~~
操作多个仓库的时候,可以在Git中设置获取Pull Request的全局选项。
~~~
git config --global --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
~~~
此时可以在任意仓库中使用以下命令:
~~~
git fetch origin
~~~
~~~
git checkout pr/42
~~~
[_进一步了解如何检出pull request到本地._](https://help.github.com/articles/checking-out-pull-requests-locally)
';
Stripspace命令
最后更新于:2022-04-02 01:05:28
Git Stripspace命令可以:
* 去掉行尾空白符
* 多个空行压缩成一行
* 必要时在文件末尾增加一个空行
使用此命令时必须传入一个文件,像这样:
~~~
$ git stripspace README.md
~~~
[_进一步了解 Git `stripspace` 命令._](http://git-scm.com/docs/git-stripspace)
';
前一个分支
最后更新于:2022-04-02 01:05:26
快速检出上一个分支:
~~~
$ git checkout -
# Switched to branch 'master'
$ git checkout -
# Switched to branch 'next'
$ git checkout -
# Switched to branch 'master'
~~~
[_进一步了解 Git 分支._](http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging)
';
Git
最后更新于:2022-04-02 01:05:24
GitHub资源
最后更新于:2022-04-02 01:05:22
| Title | Link |
| --- | --- |
| GitHub Explore | [https://github.com/explore](https://github.com/explore) |
| GitHub Blog | [https://github.com/blog](https://github.com/blog) |
| GitHub Help | [https://help.github.com/](https://help.github.com/) |
| GitHub Training | [http://training.github.com/](http://training.github.com/) |
| GitHub Developer | [https://developer.github.com/](https://developer.github.com/) |
### GitHub讨论
| Title | Link |
| --- | --- |
| How GitHub Uses GitHub to Build GitHub | [https://www.youtube.com/watch?v=qyz3jkOBbQY](https://www.youtube.com/watch?v=qyz3jkOBbQY) |
| Introduction to Git with Scott Chacon of GitHub | [https://www.youtube.com/watch?v=ZDR433b0HJY](https://www.youtube.com/watch?v=ZDR433b0HJY) |
| How GitHub No Longer Works | [https://www.youtube.com/watch?v=gXD1ITW7iZI](https://www.youtube.com/watch?v=gXD1ITW7iZI) |
| Git and GitHub Secrets | [https://www.youtube.com/watch?v=Foz9yvMkvlA](https://www.youtube.com/watch?v=Foz9yvMkvlA) |
| More Git and GitHub Secrets | [https://www.youtube.com/watch?v=p50xsL-iVgU](https://www.youtube.com/watch?v=p50xsL-iVgU) |
';
贡献者指南
最后更新于:2022-04-02 01:05:19
在你的仓库的根目录添加一个名为 `CONTRIBUTING` 的文件后,贡献者在新建Issue或Pull Request时会看到这个文件的链接。
![2015-07-16/55a77918a76c3](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a77918a76c3.png)
[_进一步了解贡献者指南._](https://github.com/blog/1184-contributing-guidelines)
';
贡献内容的自动检查
最后更新于:2022-04-02 01:05:17
假设你想人们使用你的项目并给你的项目做出贡献,你往往需要回答他们常见问题。这个项目是干什么用的?我如何使用它?允许我怎样使用?我如何为项目出力?我怎样配置开发环境?我怎么能保证新功能不会破坏已有的功能?
Friction是一个命令行脚本,用来检查你的项目是否回答了这些问题。下面是示例输出:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a778e9559e3.png)
Friction 支持 MRI 2.1.0, MRI 2.0.0 和 MRI 1.9.3.
';
Hub
最后更新于:2022-04-02 01:05:15
Hub是一个对Git进行了封装的命令行工具,可以帮助你更方便的使用Github。
这使得你可以像下面这样进行克隆:
~~~
$ hub clone tiimgreen/toc
~~~
[_查看更多Hub提供的超酷命令._](https://github.com/github/hub#commands)
';
Diffs
最后更新于:2022-04-02 01:05:13
### 可渲染文档的Diffs
提交和Pull Requests里包含有Github支持的可渲染文档(比如Markdown)会提供 _source_ 和 _rendered_ 两个视图功能。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a777469e038.png)
点击 "rendered" 按钮,看看改动在渲染后的显示效果。当你添加、删除或修改文本时,渲染纯文本视图非常方便。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a777490d424.png)
[_进一步了解渲染纯文本视图Diffs._](https://github.com/blog/1784-rendered-prose-diffs)
### 可变化地图
当你在GitHub上查看一个包含地理数据的提交或pull request时,Github可以显示数据变动的视觉表示。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a777509cf3b.gif)
[_进一步了解可比较地图._](https://github.com/blog/1772-diffable-more-customizable-maps)
### 在diff中折叠与扩展代码
你可以通过点击diff边栏里的 _unfold_ 按钮来多显示几行上下文。你可以一直点击 _unfold_ 按钮直到显示了文件的全部内容。这个功能在所有GitHub产生的diff界面都可以使用。
![](https://f.cloud.github.com/assets/22635/1610539/863c1f64-5584-11e3-82bf-151b406a272f.gif)
[_进一步了解扩展Diff上下文._](https://github.com/blog/1705-expanding-context-in-diffs)
### 查看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在内的多种图片格式并提供了几种方式来比较这些格式的图片文件版本间的不同。
![2015-07-16/55a7786ca5cd1](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a7786ca5cd1.png)
[_查看更多关于渲染图像变动的内容_](https://help.github.com/articles/rendering-and-diffing-images)
';
撤销Pull Request
最后更新于:2022-04-02 01:05:10
可以通过Pull Request中的Revert按钮来撤销一个已合并的Pull Request中的commit。按下按钮后会自动生成一个进行逆向操作的Pull Request。
![](https://camo.githubusercontent.com/0d3350caf2bb1cba53123ffeafc00ca702b1b164/68747470733a2f2f6769746875622d696d616765732e73332e616d617a6f6e6177732e636f6d2f68656c702f70756c6c5f72657175657374732f7265766572742d70756c6c2d726571756573742d6c696e6b2e706e67)
[*进一步了解“撤销”按钮](https://github.com/blog/1857-introducing-the-revert-button)
';
渲染表格数据
最后更新于:2022-04-02 01:05:08
GitHub支持将 `.csv` (comma分隔)和 `.tsv` (tab分隔)格式的文件渲染成表格数据。
![2015-07-16/55a7794953d3d](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a7794953d3d.png)
[_进一步了解渲染表格数据._](https://github.com/blog/1601-see-your-csvs)
';
查看YAML格式的元数据
最后更新于:2022-04-02 01:05:06
许多博客站点,比如基于 [Jekyll](http://jekyllrb.com/) 的GitHub Pages,都依赖于一些文章头部的YAML格式的元数据。Github会将其渲染成一个水平表格,方便阅读。
![2015-07-16/55a795217ee72](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-07-16_55a795217ee72.png)
[_进一步了解 在文档里查看YAML元数据._](https://github.com/blog/1647-viewing-yaml-metadata-in-your-documents)
';