Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
999 lines (695 sloc) 47.3 KB

GitHubカンニング・ペーパー Awesome

これはGitやGitHubの隠された機能やよく知られていない機能の一覧だ。Zach HolmanによるAloha Ruby Conference 2012でのGit and GitHub Secretsスライド)とWDCNZ 2013でのMore Git and GitHub Secretsスライド)の二つのトークを元にしている。

短縮URL: http://git.io/sheet

Read this in other languages: English, 한국어, 日本語, 简体中文, 正體中文.

目次

GitHub

空白の無視

GitHub上で差分ページを表示している時、そのURLに?w=1を加えると、空白の変化によるできた差分は表示されなくなり、コード上の変化だけを参照することができる。

Diff without whitespace

GitHubの秘密についてもっと詳しく

タブ幅の調節

差分やファイルを表示している時、URLに?ts=4を追加するとタブを空白4つの幅で表示する。デフォルトは8つだ。tsに指定した数で表示されるということだ。これはGistやrawファイルを表示している時には適用されないが、Chromeをインストールすることにより、対応することができる。

例えばGoのソースファイルを表示している時、?ts=4を追加する前はこのように表示されるが:

Before, tab space example

?ts=4を追加するとこのように表示される:

After, tab space example

特定のユーザーによるコミット履歴

特定のユーザーによるあるリポジトリへのコミット履歴のみを参照したい場合は、?author={user}をURLの末尾に付ける。

https://github.com/rails/rails/commits/master?author=dhh

DHH commit history

コミット・ビューの違いについてもっと詳しく

リポジトリのクローン

リポジトリをクローンする時、URLの末尾の.gitは無くても構わない。

$ git clone https://github.com/tiimgreen/github-cheat-sheet

Gitのcloneコマンドについてもっと詳しく

ブランチ

全ブランチを別のブランチと比較

コミット一覧ボタンの隣からブランチ一覧ページに行くと:

https://github.com/{user}/{repo}/branches

メイン・ブランチにマージされていないブランチの一覧が表示される。

このページからボタンをクリックしてブランチ比較ページへ移動したりブランチを削除することができる。

Compare branches not merged into master in rails/rails repo - https://github.com/rails/rails/branches

ブランチ同士の比較

GitHubのブランチ比較は以下のようなURLで提供されている:

https://github.com/{user}/{repo}/compare/{range}

{range}master...4-1-stableに変更する。

例えば:

https://github.com/rails/rails/compare/master...4-1-stable

Rails branch compare example

{range}には以下のように変更することもできる:

https://github.com/rails/rails/compare/master@{1.day.ago}...master
https://github.com/rails/rails/compare/master@{2014-10-04}...master

日付の形式はYYYY-MM-DDだ。

Another compare example

diffpatchのビューでもブランチを利用して比較することができる:

https://github.com/rails/rails/compare/master...4-1-stable.diff
https://github.com/rails/rails/compare/master...4-1-stable.patch

時間を指定してのブランチ比較についてもっと詳しく

フォークされたリポジトリ間でのブランチ比較

GitHubでフォークされたリポジトリ同士でブランチを比較する場合、以下のようなURLを変更する:

https://github.com/user/repo/compare/{foreign-user}:{branch}...{own-branch}

例:

https://github.com/rails/rails/compare/byroot:master...master

Forked branch compare

Gists

Gistsは少量のコード群を管理する最適な手段だ。ちゃんとしたリポジトリをいちいち作成する必要はない。

Gist

GistのURLの最後に.pibbを付ける()とHTMLのみのバージョンが表示されるので、そのソースは他のウェブサイトに貼り付けるにはもってこいだろう。

簡単なものとはいえ、Gitリポジトリとして機能するため、以下のようにすれば普通のGitリポジトリと同じようにクローンすることができる:

$ git clone https://gist.github.com/tiimgreen/10545817

Gists

This means you also can modify and push updates to Gists:

$ git commit
$ git push
Username for 'https://gist.github.com':
Password for 'https://tiimgreen@gist.github.com':

しかしながら、Gistではディレクトリーがサポートされていない。全てのファイルはリポジトリーのルートに置かれている必要がある。

Gistの作成についてもっと詳しく

Git.io

Git.ioはGitHubの提供するGitHub専用のシンプルな短縮URLサービスだ。

Git.io

cURLを使って利用することができる:

$ 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を押すと現在閲覧しているリポジトリーから検索するフォームにフォーカスが当たる。ここでBackspaceを押し「This repository」という文字列を消すことでGitHub全体からの検索へと切り替えることができる
  • issue画面でlを押すとラベルの編集インターフェイスが開かれる。
  • ファイルを参照している時(例: https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md)にyを押すと、参照している時の状態で固定されるURLに変更される。つまりそのファイルのコードが後に変化したとしても、そのURLでは今とまったく同じ状態で表示されるということだ。

?を押すとそのページで使える全ショートカットが表示されるだろう。

Keyboard shortcuts

検索機能についてもっと詳しく

コードの指定行の強調

コードのURLの末尾に#L52と付けるか行番号をクリックすると、その行が強調表示される。

これは範囲指定も可能だ(例: #L53-L60)。こういった範囲を選択するにはshiftを押しながら二つの行をクリックしても良い:

https://github.com/rails/rails/blob/master/activemodel/lib/active_model.rb#L53-L60

Line Highlighting

コミットからissueを閉じる

あるコミットでissueを解決した場合、コミットメッセージでfix/fixes/fixedclose/closes/closedresolve/resolves/resolvedに続けてissue番号を指定すると、そのコミットがmasterブランチにpushされると同時に指定issueが閉じられるだろう。

$ git commit -m "Fix screwup, fixes #12"

こうするとissue#12が閉じられ、閉じたissueにはそのコミットへの参照が自動的に追加される。

Closing Repo

コミット・メッセージからissueを閉じる方法についてもっと詳しく

issueの相互リンク

同じリポジトリの違うissueへリンクを張り参照させたい場合、#に続けてissue番号を指定する。そうすると自動的にリンクが作成されるだろう。

別のリポジトリのissueの場合は{user}/{repo}#ISSUE_NUMBERとすれば良い(例: tiimgreen/toc#12)。

Cross-Link Issues

コメントのロック

リポジトリのオーナーや共同開発者ならば、pull requestやissueへのコメントをロックできるようになった。

Lock conversation

つまりそのプロジェクトの共同開発者ではないユーザーはコメントをすることができないということだ。

Comments locked

コメントのロックについてもっと詳しく

pull requestでのCI結果の表示

適切に設定を行えばpull requestを受け取るたびに、通常のコミットと同じようにTravis CIがそのpull requestをビルドするだろう。どう設定するかはTravis CI: Getting startedを読むと良い。

Travis CI status

コミット・ステータスAPIについてもっと詳しく

絞り込み検索

issueとpull requestの検索インターフェイスでは、絞り込みをかけることが可能だ。

例えばRailsのリポジトリーでは、以下の様な絞り込み検索により"activerecord"というラベルがついたissueのみを表示することができる:

is:issue label:activerecord

逆に"activerecord"というラベルがついていないissueのみを表示することもできる:

is:issue -label:activerecord

そして、この絞り込み検索はpull requestに対しても行うことができる:

is:pr -label:activerecord

GitHubでは開かれているissueやpull requestのみを表示するタブ、または既に閉じられたそれらのみを表示するタブが用意されているが、絞り込み検索によってマージ済みのpull requestのみを表示することもできる。以下のようなフィルターを使えば良いだろう:

is:merged

issueの検索についてもっと詳しく

そしてGitHubはStatus APIの結果を使ってフィルターすることもできるようになった。

Status APIでsuccessが設定されたpull requestのみ:

status:success

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を使って言語を判別し構文強調を行っている。構文強調がサポートされている言語の一覧は言語定義YAMLファイルを参照すればわかるだろう。

GitHub Flavored Markdownについてもっと詳しく

Emoji

Emojiはpull requestやissue、コミット・メッセージ、リポジトリーの概要などで:name_of_emoji:と書くと利用できる:

GitHubでサポートされているEmojiの完全なリストはEmoji cheat sheet for Campfire and GitHubAll-Github-Emoji-Iconsで確認できる。 素敵なemojiの検索はemoji.muan.co

GitHubで使われているEmojiのトップ5は以下の通りだ:

  1. :shipit:
  2. :sparkles:
  3. :-1:
  4. :+1:
  5. :clap:

画像及びアニメーションGIF

画像やアニメーションGIFはコミットのコメントやREADMEなどで利用できる:

![Alt Text](http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif)

リポジトリにある画像も直接参照することが出来る:

![Alt Text](https://github.com/{user}/{repo}/raw/master/path/to/image.gif)

Peter don't care

あらゆる画像はGitHubでキャッシュされるので、画像のホスティング先が落ちていたとしても変わらず表示されるだろう。

GitHub Wikiへの画像の添付

GitHub Wikiで画像を追加する方法がいくつかある。通常のMarkdown記法(前節を参照)はもちろん使える。しかしそれだけではなく、画像の幅と高さを指定する記法も使うことができる:

[[ http://www.sheawong.com/wp-content/uploads/2013/08/keephatin.gif | height = 100px ]]

こうすると以下のようになる:

Just a screenshot

素早く引用

issueのスレッドで他の人のコメントを引用してコメントしたい場合、引用したい文章を選択した状態でrを押すと、ブロック引用の記法を使ってテキストエリアにコピーされる。

Quick Quote

素早く引用する方法についてもっと詳しく

コメントへのクリップボードの画像の追加

(Chrome系のブラウザーのみで動作)

スクリーンショットをクリップボードに保存(mac: cmd-ctrl-shift-4)した後、その画像はコメント投稿フォームで貼り付け(cmd-vまたはctrl-v)ることができ、自動的にGitHubへアップロードされます。

Pasting Clipboard Image to Comments

コメントへのクリップボードの画像の追加についてもっと詳しく

設定済みライセンスの追加

GitHub上でリポジトリを作成する時、あらかじめ設定されているライセンスを追加することもできる:

Licese

既に存在するリポジトリであってもウェブ上のインターフェイスからファイルを作成することで追加できる。LICENSEというファイル名にした場合、ライセンスを選択するオプションが表示されるのだ:

License

.gitignoreも同じように作成時に追加することも、後で追加することもできる。

オープンソース・ライセンスについてもっと詳しく

タスクリスト

issueやpull requestでは以下のように(空白に注意)書くとチェックボックスを作成することができる:

- [ ] Be awesome
- [ ] Prepare dinner
  - [ ] Research recipe
  - [ ] Buy ingredients
  - [ ] Cook recipe
- [ ] Sleep

Task List

これらチェックボックスにチェックが入れられると、同時にMarkdownソースも更新される:

- [x] Be awesome
- [ ] Prepare dinner
  - [x] Research recipe
  - [x] Buy ingredients
  - [ ] Cook recipe
- [ ] Sleep

タスク・リストについてもっと詳しく

Markdownファイルでのタスクリスト

通常のMarkdownファイルでも読み取り専用のチェックリストを以下のような記法で追加することができる:

- [ ] Mercury
- [x] Venus
- [x] Earth
- [x] Mars
- [ ] Jupiter
  • Mercury
  • Venus
  • Earth
  • Mars
  • Jupiter

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というプラグインがインストールされているので、Emoji@mentionsはJekyllの投稿やページでGitHub.com上と同じように動作する。

GitHub Pageでのメタデータとプラグインのサポートについてもっと詳しく

文書内のYAMLメタデータ

JekyllGitHub Pagesで利用している場合など、多くのブログではYAML形式のメタデータをその記事の先頭に書く必要がある。GitHubではこういったメタデータを読みやすいように表として表示してくれる:

YAML metadata

文書内のYAMLメタデータの表示についてもっと詳しく

表形式のデータ表示

GitHubでは.csv(カンマ区切り)と.tsv(タブ区切り)の形式で書かれた表を整形して表示する機能をサポートしている。

Tabular data

表形式のデータ表示についてもっと詳しく

PDF表示

GitHubではPDFの表示をサポートしている:

PDF

PDF表示についてもっと詳しく

pull requestの取り消し

pull requestをマージした後、意味がなかったことがわかったり、そのpull requestをマージしたのは間違いだったことがわかることもあるだろう。

その取り消しは、pull requestのページに表示されているマージ・コミットの右端にあるRevertボタンをクリックすることにより、そのpull requestで行われた変更を取り消すpull requestを作成することによって行うことができる。

Revert button

pull requestの取り消しについてもっと詳しく

差分の表示

レンダリング済みの差分表示

コミットやpull requestにGitHubでレンダリングされて表示されるもの(例: Markdown)が含まれる場合、そのソースレンダリング済みの両方の差分を見ることができる。

Source / Rendered view

レンダリングされた状態での差分を表示したい場合は「Rendered」ボタンをクリックする。レンダリング済みの差分表示では文章の追加や削除、編集がよりわかりやすい:

Rendered Prose Diffs

レンダリング済みの差分表示についてもっと詳しく

マップ差分の可視化

コミットやpull requestにジオデータの変更が含まれている場合はいつも、GitHubではそのジオデータの変化を可視化してくれるだろう。

Diffable Maps

マップ差分の可視化についてもっと詳しく

差分表示の前後を表示

差分表示の行番号付近にある展開ボタンを使うと、その前後の行をクリックして表示させることができる。展開ボタンを押し続けることによってファイル全体を表示することもできるし、またこの機能はあらゆるGitHubの差分表示ビューに用意されている。

Expanding Context in Diffs

差分表示の前後を表示についてもっと詳しく

pull requestの内容をDIFFまたはPATCH形式で取得

pull requestによる差分はそのURLの末尾に.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

(...)

画像の表示とDIFF

GitHubは、PNGやJPG、GIF、PSDといった多くの一般的な画像形式の表示をサポートしている。それに加え、様々な方法でこれら画像形式のバージョンごとの差分を比較することもできる。

Diffable PSD

画像の表示とDIFFについてもっと詳しく

Hub

HubはGitのラッパーとして機能するコマンドライン・ツールで、これを利用するとGitHubをコマンドラインからとても簡単に扱えるようになる。

例えば以下のようにしてリポジトリのクローンが行える:

$ hub clone tiimgreen/toc

これが以下のコマンドの代わりというわけだ:

$ git clone https://github.com/tiimgreen/toc.git

Hubが提供する便利な機能についてもっと詳しく

開発参加のガイドライン

リポジトリのルートにCONTRIBUTINGという名前のファイルを置くと、issueやpull requestを作成しようとした時にそれへのリンクが表示されるようになる。

Contributing Guidelines

開発参加のガイドラインについてもっと詳しく

Octicons

GitHubで使われているアイコン(Octicons)はオープンソース化された。

Octicons

GitHubのOcticonsについてもっと詳しく

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 Talks

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

すべての削除済みファイルをワーキング・ツリーから削除する

例えば/bin/rmを使って大量のファイルを削除した場合、以下のコマンドを使えばワーキング・ツリー、そしてインデックスからも削除することができ、ファイルごとにそれぞれGitコマンドを実行する必要がなくなる:

$ git rm $(git ls-files -d)

例えば以下のように実行される:

$ git status
On branch master
Changes not staged for commit:
	deleted:    a
	deleted:    c

$ git rm $(git ls-files -d)
rm 'a'
rm 'c'

$ git status
On branch master
Changes to be committed:
	deleted:    a
	deleted:    c

直前のブランチ

Gitで直前のブランチへ移動するには:

$ git checkout -
# Switched to branch 'master'

$ git checkout -
# Switched to branch 'next'

$ git checkout -
# Switched to branch 'master'

Gitのブランチ操作についてもっと詳しく

空白の削除

Gitのstripspaceコマンドは以下の作業を行う:

  • 行末の空白文字の削除
  • 空白行の取りまとめ
  • ファイル末尾への改行の追加

このコマンドを呼ぶ時はファイルを渡さねばならない。例:

$ git stripspace < README.md

Gitのstripspaceコマンドについてもっと詳しく

SSH公開鍵

以下のURLにアクセスすることで、SSH公開鍵の一覧をテキスト形式で取得することができる:

https://github.com/{user}.keys

例: https://github.com/tiimgreen.keys

SSH公開鍵についてもっと詳しく

pull requestのチェックアウト

pull requestはGitHubのリポジトリでは特別なブランチであり、様々な方法でローカルに取り込むことができる:

特定のpull requestを取り込み、一時的にFETCH_HEADとして保存すると、素早く差分を確認してマージすることが可能だ:

$ git fetch origin refs/pull/[PR-Number]/head

参照仕様を使うとすべての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に対しては、その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のチェックアウトについてもっと詳しく

空のコミット

--allow-emptyオプションを付けると、コードの変化がなくてもコミットを作成することができる:

$ git commit -m "Big-ass commit" --allow-empty

この機能の使い方(便利なもの)としては以下のようなものが挙げられる:

  • 新たな機能や大きな変更を事前に通知する時
  • コード上に現れないような変更をプロジェクトに加えた時
  • リポジトリを利用して誰かと連絡を取りたい時
  • リポジトリへの最初のコミットをやり直しできるようにしたい時: git commit -m "init repo" --allow-empty.

Gitステータスのスタイリング

普通に実行すると:

$ git status

このように表示されるが:

git status

-sbを追加することによって:

$ git status -sb

このように表示することもできる:

git status -sb

Gitのstatusコマンドについてもっと詳しく

Gitログのスタイリング

以下のように実行すると:

$ git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

このように表示される:

git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

この設定はPaleszが考えたものだ。

これは後述の手順に従ってエイリアスへ追加することもできる。

Gitのlogコマンドについてもっと詳しく

コミットログの検索

指定した文字列を今までのコミット・メッセージから検索して、もっとも新しいものを表示することができる。

$ git show :/query

queryを検索したい文字列(大文字と小文字を区別する)で置き換えると、最新のコミットがそのコミットにおける差分と同時に表示される。

$ git show :/typo

git show :/query

注: 終了するにはqを押す。

Git Grep

Git Grepは指定したパターンに一致する行の一覧を返してくれる。

実行すると:

$ git grep aliases

aliasesという文字を含むファイルを全て表示することだろう。

git grep aliases

注: 終了するにはqを押す。

複数のフラグを組み合わせることで、より高度な検索を行うことができる。例えば:

  • -e 次のパラメーターをパターンとする (例: regex)
  • --and--or--not 複数のパターンを組み合わせる

以下のようにして使う:

$ git grep -e pattern --and -e anotherpattern

Gitのgrepコマンドについてもっと詳しく

マージ済みブランチ

以下のように実行すると:

$ git branch --merged

現在のブランチに既にマージされたブランチの一覧が表示される。

逆に:

$ git branch --no-merged

こうするとまだマージされていないブランチが表示されるだろう。

Gitのbranchコマンドについてもっと詳しく

FixupとAutosquash

これまでのコミット(HEADの直前でなくても構わない)、例えばabcdeというチェックサムのコミットで何か問題を見つけた場合、以下の様なコマンドで問題の修正を行うことができる:

$ git commit --fixup=abcde
$ git rebase abcde^ --autosquash -i

Gitのcommitコマンドについてもっと詳しく Gitのrebaseコマンドについてもっと詳しく

ローカル・リポジトリを参照するウェブサーバー

Gitのinstawebコマンドを利用すると、自分の作業リポジトリをgitwebで参照することができる。このコマンドはgitwebとウェブサーバーをセットアップしてローカル・リポジトリをブラウザーで開けるようにする簡単なスクリプトだ。

$ git instaweb

以下のようなページが開かれる:

Git instaweb

Gitのinstawebコマンドについてもっと詳しく

Gitの設定

.gitconfigとはあらゆる設定が書き込まれるファイルだ。

エイリアス

エイリアスはGitの呼び出し方を自分で好きなように定義できるヘルパー機能だ。例えばgit agit 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'

おすすめの設定を挙げておこう:

エイリアス コマンド 設定方法
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 cleanup git branch --merged | grep -v '*' | xargs git branch -d git config --global alias.cleanup "!git branch --merged | grep -v '*' | xargs git branch -d"
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/
Git for Computer Scientists http://eagain.net/articles/git-for-computer-scientists/
Git Magic http://www-cs-students.stanford.edu/~blynn/gitmagic/
GitHub Training Kit http://training.github.com/kit
Git Visualization Playground http://onlywei.github.io/explain-git-with-d3/#freeplay

Git Books

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 PluralSight https://github.com/pluralsight/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

訳注

これはGitHub Cheat Sheetの日本語訳である。