Skip to content

Latest commit

 

History

History
462 lines (306 loc) · 16.3 KB

README.ja.md

File metadata and controls

462 lines (306 loc) · 16.3 KB

GitHubカンニング・ペーパー

これはGitやGitHubの隠された機能やよく知られていない機能の一覧だ。これはZach HolmanによるGit and GitHub SecretsというAloha Ruby Conference 2012におけるセッションを元にしている。併せてZachのスライドも参照した方が良いだろう。

目次

空白の無視

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

リポジトリのクローン

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

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

Hub - Gitラッパー

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

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

$ hub clone tiimgreen/toc

これは実際には以下のようなコマンドに変換される:

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

直前のブランチ

コマンドラインで直前にいたディレクトリへ移動するには以下のようにすれば良い:

$ cd -

同じようにGitで直前のブランチをチェックアウトすることができる:

$ git checkout -
# Switched to branch 'master'

$ git checkout -
# Switched to branch 'next'

git.io

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

http://git.io/wO0xUg

Gists

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

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

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

Gists

キーボード・ショートカット

リポジトリをブラウザーで開いている時は、ショートカットを利用して様々なページヘ簡単にアクセスできるようになっている。

tを押すとファイルの検索インターフェイスが起動する。

wを押すとブランチ選択インターフェイスが起動する。

sを押すとファイル検索フォームにフォーカスが当たる。

ファイルを参照している時(例: https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md)にyを押すと、参照している時の状態で固定されるURLに変更される。つまりそのファイルのコードが後に変化したとしても、そのURLでは今とまったく同じ状態で表示されるということだ。

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

コミットからイシューを閉じる

あるコミットでイシューを解決した場合、コミットメッセージでfix/fixes/fixedまたはclose/closes/closedに続けてイシュー番号を指定すると、指定イシューを閉じることができる。

$ git commit -m "Fix cock up, fixes #12"

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

Closing Repo

プルリクエストのチェックアウト

プルリクエストをローカル・リポジトリへチェックアウトするには、まず以下のようにコマンドを実行しその変更を取り込む:

$ git fetch origin '+refs/pull/*/head:refs/pull/*'

そして、プルリクエストを番号(例: 42)を指定してチェックアウトする:

$ git checkout refs/pull/42

別の方法としては、まずリモート・ブランチとして取り込み:

$ git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'

それから番号を指定して取り込むこともできる:

$ git checkout origin/pr/42

またプルリクエストの取り込みは、.git/configに以下の行を追加すると自動化することができる:

[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/*

イシューの相互リンク

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

別のリポジトリのイシューの場合はuser_name/repo_name#ISSUE_NUMBERとすれば良い(例: tiimgreen/toc#12)。

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ファイルを参照すればわかるだろう。

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

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

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

空のコミット

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

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

Trololol

ブランチ同士の比較

GitHubのブランチ比較は以下のような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

masterブランチと特定の期間または日時との比較が行えるだろう。

コードの指定行の強調

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

これは範囲指定も可能だ(例: `#L53-L60):

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

Line Highlighting

Emoji

Emojiはプルリクエストやイシュー、READMEなどで:name_of_emoji:と書くと利用できる:

:smile:
:poop:
:shipit:
:+1:

😄 💩 :shipit: 👍

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

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

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

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

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

![Alt Text](http://image_url.com/image.jpg)

Jim Carrey

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

素早く引用

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

Quick Quote

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

$ git status

git status

こうすることもできる:

$ git status -sb

git status -sb

Gitログのスタイリング

$ git log --all --graph --decorate --oneline --abbrev-commit

git log --all --graph --decorate --oneline --abbrev-commit

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

コミットログの検索

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

$ git show :/query

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

$ git show :/typo

git show :/query

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

マージ済みブランチ

$ git branch --merged

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

逆にまだマージされていないブランチを表示するには以下のようにする:

$ git branch --no-merged

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

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

Licese

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

License

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

TODOリスト

In Issues and Pull requests check boxes can be added with the following syntax (notice the space): イシューやプルリクエストでは以下のように(空白に注意)書くとチェックボックスを作成することができる:

- [ ] Be awesome
- [ ] Do stuff
- [ ] Sleep

TODO List

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

- [x] Be awesome
- [x] Do stuff
- [ ] Sleep

推奨したい.gitconfig

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

エイリアス

エイリアスはGitの呼び出し方を自分で好きなように定義できるヘルパー機能だ。例えばgit agit add --allを実行するようにすることができる。

エイリアスを追加するには~/.gitconfigを開く、以下のような形式で記述していく:

[alias]
	co = checkout
	cm = commit
	p = push

またはコマンドラインからも行えるだろう:

$ git config alias.new_alias git_function

例えば以下のようにする:

$ git config alias.cm commit

注: エイリアスが複数のコマンドからなる場合はクオートで括る必要がある:

$ git config alias.ac 'add -A . && commit'

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

エイリアス コマンド 設定方法
git cm git commit git config --global alias.cm commit
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 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

訳注

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