Git・GitHubに隠された便利な機能 | GitHub Cheat Sheet(日本語訳)

  • 1797
    いいね
  • 6
    コメント

:warning: NOT MAINTAINED

日本語翻訳に関するメモ

Git や GitHub の便利な使い方をまとめたられた GitHub cheat sheet の日本語訳です。
もっと分かりやすくしたいので翻訳に関するダメ出しは歓迎です。

レポジトリ
原文 tiimgreen/github-cheat-sheet
日本語翻訳 sotayamashita/github-cheat-sheet

概要

このチートシートは、Zach HolmanさんがAloha Ruby Conference 2012 (slides)で発表されたGit and GitHub Secrets と WDCNZ 2013 (slides)で発表された彼のMore Git and GitHub Secretsに触発されまとめました。

目次

GitHub

空行を無視

?w=1をdiff URLにつけることによって空白行が削除されるので、変わったところだけを見ることができます

Diff without whitespace

より詳しいGtihubの秘密についてはこちらを参照してください。

ユーザー別のコミットヒストリー表示

URLに?author=usernameを加えることでユーザーごとのコミットを見ることができます。

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

DHH commit history

commit viewに関してのより詳しい内容はこちらを参照してください。

レポジトリのクローン

レポジトリのクローンは以下のコマンドを使用することでできます

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

Gitの clone コマンドに関してのより詳しい内容はこちらを参照してください。

ブランチの比較

ブランチの比較をGtihubを使ってやるためには以下のようにURLを変更します:

https://github.com/user/repo/compare/{範囲}

範囲の指定方法、{範囲} = master...4-1-stable

例:

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

Rails branch compare example

{範囲} は以下のようにも指定することもできます:

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 のようにします

Another compare example

日付を指定することによって、何日前のものや特定のmasterブランチと比較をすることができます

時間によってcommitメッセージを比較することに関してのより詳しい内容はこちらを参照してください

forkされたbranchとの比較

GitHubを使ってforkされたbranchとの比較をする際には以下のように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 はわざわざrepositroryを作るまでもないちょっとしたコードを扱う際に便利です

Gist

このようにGist URLの最後に.pibbをつけることによって他のWebサイトに埋め込み可能なHTMLバージョンを得ることができます。

Gistsはレポジトリと同じようにクローンをすることができます:

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

Gists

Gistsに関してのより詳しい内容はこちらを参照してください

Git.io

Git.io はGitHubのために短縮URLを生成します。

Git.io

You can also use it via pure HTTP using 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 を押すと検索部分にフォカースします
  • l を押すと既存のissueでラベルを編集できます
  • y を押すと例えば、(e.g. https://github.com/tiimgreen/github-cheat-sheet/blob/master/README.md)をそのURLを固定します。なのでもしコードを変更しても、今見ているコードはそのままみることができます。

現在のページで使えるショートカットキーを知りたい場合はその画面で ? を押してください:

Keyboard shortcuts

ショートカットキーに関してのより詳しい内容はこちらを参照してください

レポジトリ内のコードをハイライト

Either adding #L52 to the end of a code file URL or simply clicking the line number will highlight that line number.

It also works with ranges, e.g. #L53-L60, to select ranges, hold shift and click two lines:

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

Line Highlighting

コミットメッセージによるissueのクローズ

もしある issue を解決した際に、fix/fixes/fixed
close/closes/closedresolve/resolves/resolvedとそのissueの番号などのキーワードのcommitメッセージがmasterブランチにコミットされることでそのissueを閉じることができます

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

Closing Repo

Commitメッセージによる既存のissue閉じ方に関してのより詳しい内容はこちらを参照してください

issue同士のリンク

同じレポジトリ内のissueに他のissueを紐付けたい場合には、#でissueの番号をつけると自動的にリンクを張ってくれます

別のレポジトリのissueと紐付けたい場合には user_name/repo_name#ISSUE_NUMBER 例えば tiimgreen/toc#12 とします

Cross-Link Issues

Pull RequestにCIステータスを表示

プルリクエストを受け取った際に毎回、Travis CI が毎回のコミットメッセージの際にテストを通すようにそのプルリクエストに対してテストをします。その方法についてはTravis CIのget started with Travis CI.を参照してください。

Travic CI status

commit statusのAPIに関してのより詳しい内容はこちらを参照してください

マークダウンファイル内でのコードのハイライト

例えば、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 で見ることができます。

Read more about GitHub Flavored Markdown.

絵文字

絵文字を、プルリクエスト、issues、commitメッセージ、マークダウンファイルなどで使うことができます :絵文字の名前:

例:

:smile:

すると以下のような絵文字が表示されます:

:smile:

GitHubで使える絵文字のリストは emoji-cheat-sheet.comscotch-io/All-GitHub-Emoji-Iconsで見ることができます。

ちなみにGitHubでよく使われる絵文字5つはこれです:

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

画像(GIF)

画像やGIFをcommnetsやREADMEファイルなどに使うことができます:

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

Peter don't care

すべての画像はGitHubでキャッシュされます。なので画像のホスト先が落ちても画像は消えません

GitHub Wikiに画像を埋め込む

Wikiページに画像を埋め込む方法はいくつかあります。主な方法としては上記のような基本的なマークダウンの記法があります。また画像の幅や高さを指定できる記法もあります。

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

すると以下のようになります:

Just a screenshot

素早く引用(Quick Quoting)

コメントをする際に前のコメントを引用したいとき、まずそのテキストを選択して r を押すとその部分があなたのコメント部分に > がついた形で反映されます

Quick Quote

素早く引用(quick quoting)に関してのより詳しい内容はこちらを参照してください

ライセンスを簡単に表示(Quick Licensing)

レポジトリを作成した際にGitHubが簡単にライセンスを表示できる選択肢があります:

License

もちろん既存のレポジトリに対してライセンスを作成することができます。ファイル名に LICENSE と入力するとライセンスの選択肢が表示されます:

License

.gitignoreでも同様のことができます

オープンソースライセンスに関してのより詳しい内容はこちらを参照してください

タスクリスト

issueやプルリクエストの中に以下のような方法で書くとチェックボックスを追加することができます:

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

Task List

リストをクリックすると、自動的にマークダウンにも反映されます:

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

タスクリストに関してのより詳しい内容はこちらを参照してください

相対リンク

マークダウンで相対リンクの使用は推奨されています

[Link to a header](#awesome-section)
[Link to a file](docs/readme)

絶対リンクはレポジトリ名やユーザー名が、フォーク先などが変更された際に必ずそれを変更しなければなりません。なので相対リンクを使うことによってドキュメントの保守性を高めることができます

GitHubでの相対リンクに関してのより詳しい内容はこちらを参照してください

GitHubページで使えるメタデータやプラグイン

Jekyllのpagesとpostsにレポジトリ情報をsite.githubで表示することができます。例えば、 {{ site.github.project_title }}のように使います。

Jemojiとjekyll-mentionプラグインでemoji@mentions をJekyllのpostsやpagesGtihub.comのレポジトリが変更されればそれにともなって動的に変わります。

GitHubページで使えるレポジトリのメタデータやプラグインに関してのより詳しい内容はこちらを参照してください

YAMLメタデータをドキュメントで表示

GitHub PagesJekyllのような多くのブログサービスはその投稿にYAMLのメタデータの形式をとっています。GitHubはこれらのデータを以下の画像のように見やすく表示してくれます。

YAML metadata

YAMLメタデータをドキュメントで表示することに関してのより詳しい内容はこちらを参照してください

表形式データの表示

GitHubは.csv.tsv のファイルフォーマットを使用することで表形式データの表示を可能にします。

Tabular data

表形式データの表示に関してのより詳しい内容はこちらを参照してください

差分

レンダリングされた差分

マークダウンなどを含むコミットやプルリクエストでは sourcerendered という選択肢が表示される機能があります。

Source / Rendered view

"rendered" ボタンを押すとドキュメントをレンダリングした状態での差分を表示してくれます:

Rendered Prose Diffs

レンダリングされた差分に関してのより詳しい内容はこちらを参照してください

地図の差分

地図の情報を含むcommitやプルリクエストを見る際に、GitHubはそれを視覚的にその差分を表示します

Diffable Maps

地図の差分に関してのより詳しい内容はこちらを参照してください

差分コンテンツの展開

差分の展開ボタン(unfold)を使用すると、クリックするだけで、コンテキストの追加の行を明らかにすることができます。ファイル全体を明らかにしてきたまで展開クリック保つことができ、かつ機能がGitHubには、差分を表示することが可能です。

Expanding Context in Diffs

差分コンテンツの展開に関してのより詳しい内容はこちらを参照してください

差分(Diff・Patch) of Pull Request

URLに .diff.patch をURLに追加するこでプルリクエストの差分を見ることができます。

例:

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をURLに追加すると以下のようになります:

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

(...)

Hub

HubはGitのラッパーでさらに便利な機能やGitHubと一緒に使うとと便利なコマンドなどが追加されています。

以下のコマンドでこれまでの$ git cloneと同様のことができます:

$ hub clone tiimgreen/toc

Hubのコマンドに関してのクールな機能についてのより詳しい内容はこちらを参照してください

Frictionと使ってコントリビューターとの衝突(Friction)を減らす

もしも、あなたのプロジェクトを使ってそして開発に貢献して欲しい場合、まずは以下の基本的な質問に答える必要があります。このプロジェクトはなんなのか?・どう使うのか?・どのような場合に使えるのか?・どのように貢献すればいいのか?・どのように開発すればいいのか?・どのように開発すれば自分の新しい機能が既存のものを壊さずにでるのか?

Frictionというコマンドラインツールが基本的なこと.に関して調べてくれます。

例:

Friction output

Friction MRI 2.1.0, MRI 2.0.0, and MRI 1.9.3. をサポートしています

コントリビューティングガイドライン

CONTRIBUTING ファイルをレポジトリのルートに追加することによって、協力してくれる方がissueを作くる時やプルリクエストを送る際に際に以下の画像のようにCONTRIBUTINGファイルへのリンクが表示されます。

Contributing Guidelines

Contributing Guidelinesに関してのより詳しい内容はこちらを参照してください

GitHubに関するサイトなどの情報

タイトル リンク
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 トーク

タイトル リンク
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

前のBranchへ

Gitで前のbranchに戻る:

$ git checkout -
# Switched to branch 'master'

$ git checkout -
# Switched to branch 'next'

$ git checkout -
# Switched to branch 'master'

Git branchingに関してのより詳しい内容はこちらを参照してください。

Stripspace

Git Stripspace:

  • 末尾のホワイトスペースの削除
  • 空白を詰める
  • ファイルの最後に空行を追加

ファイルはこのようなコマンドで呼ばれます

例:

$ git stripspace < README.md

Git stripspace に関してのより詳しい内容はこちらを参照してください。

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

プルリクエストをローカルにチェックアウトしたい場合に、以下のコマンドを使ってフェッチすることがきます:

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

そして、プルリクエストをチェックアウトできます:

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

ローカルにプルリクエストをチェックアウトすること関してのより詳しい内容はこちらを参照してください。

空のコミット :trollface:

--allow-emptyを追加することによってコードに何も変更を加えてなくてもそのcommitメッセージをpushできます:

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

例えば、以下のようなときに使います:

  • 新しい機能の追加などの始まりを明確にするために
  • コードに関係ないドキュメントの変化をした場合
  • レポジトリ上でのコミュニケーションをするために

Git Statusのスタイル

実行:

$ git status

すると以下のようになります:

git status

-sb を追加すると:

$ 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' --abbrev-commit --date=relative

すると以下のようになります:

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

Credit to Palesz

ここにエイリアスの仕組みを参照されます

* Git log コマンドに関してのより詳しい内容はこちらを参照してください。*

Git Query

Git Queryを使うことによって今までのコミットメッセージの中の最も新しいものからqueryにマッチするものを検索することができます。

$ git show :/query

query 部分には検索したい単語をいれます。そしてマッチする最も新しいものの詳細が表示されます。

$ git show :/typo

git show :/query

q と押すと中断されます

マージされたブランチ

実行:

$ git branch --merged

これまでに現在のブランチにマージされたブランチの一覧が表示されます。

逆の場合:

$ git branch --no-merged

これまでに現在のブランチにマージされていないブランチの一覧が表示されます。

Read more about the Git branch command.

ローカルレポジトリを見るためのウェブサーバ

gitwebinstaweb コマンドを使うことによって現在のレポジトリを見ることができます。このコマンドは簡単に gitweb を立ち上げるためのものでこれはローカルレポジトリを見るためのウェブサーバーです。

$ git instaweb

すると以下のような画面が開きます:

Git instaweb

Git instawebコマンドに関してのクールな機能についてのより詳しい内容はこちらを参照してください

Gitの設定

.gitconfigにはGitの設定のすべてが含まれています。

エイリアス

エイリアスを使うことによって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

もしくは以下のようなコマンドを打って ~/.gitconfig に追加します:

$ 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 comt と打ってしまうと以下のようになります:

$ 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...

Color

Gitコマンドに関するアウトプットに色をつけるために:

$ git config --global color.ui 1

Read more about the Git config command.

Gitに関するサイトなどの情報

タイトル リンク
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に関する本の一覧

タイトル リンク
開発効率をUPする Git逆引き入門 http://goo.gl/UimwGu
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