(翻訳)【GitHub公式】Gitコマンドチートシート

githubが公式にgitコマンドのチートシートというのを出していたので、それを日本語に翻訳しました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/62822/5889b067-1baf-b258-bf80-54eb1eee1953.png)


gitとはオープンソースの分散バージョン管理システムで、ラップトップやデスクトップ上での活動を促進します。
このチートシートは簡単なGitのコマンドラインを参照できるようになっています。



## GITをインストールする
GitHubは、最も一般的なリポジトリアクション用のグラフィカルユーザーインターフェイスを含むデスクトップクライアントと、高度なシナリオ用のGitコマンドラインエディションが用意されています。

### GitHub for Windows 
https://windows.github.com 

### Mac用GitHub
https://mac.github.com

Linux用GitディストリビューションPOSIXシステムは公式のGit SCM webサイトで利用可能です

Git for All Platforms
http://git-scm.com


## gitの初期設定
ローカルリポジトリのユーザ情報を設定します

```
$ git config　--global user.name "[name]"
コミットトランザクションに付ける名前を設定します。

$ git config --global user.email "[email address]"
コミットトランザクションに添付したい電子メールを設定します。

$ git config --global color.ui auto
コマンドライン出力の時にいい感じで色付けします。
```


## リポジトリを作る
新しいリポジトリを作成するか、既存のURLからリポジトリを取得します。 

```
$ git init "[project-name]"
指定された名前を持つ新しいローカルリポジトリを作成する

$ git clone "[url]"
projectとそのバージョン履歴全体をダウンロードする
```


## コミットを作成する
編集内容を確認してコミットします。

```
$ git status
コミットするすべての新規または変更されたファイルを一覧表示する

$ git diff
まだステージングされていないファイルの違いを表示する

$ git add "[file]"
バージョン管理のためにファイルをスナップショットする(ステージにあげる)

$ git diff --staged 
ステージとの差分を表示する

$ git reset "[file]"
ファイルをアンステージしますが、内容は保存します

$ git commit -m "[コミットメッセージ]"
ステージに上がっているファイルをコミットメッセージとともに記録します
```

## ブランチ操作
一連のコミットをブランチとして切り分ける事ができます

```
$ git branch "[branch-name]"
新しいブランチを作成する

$ git checkout "[branch-name]"
指定されたブランチに切り替えて作業ディレクトリを更新する 

$ git merge "[branch]"
指定されたブランチを結合し、作業ディレクトリを更新します。

$ git branch -d "[branch-name]"
指定されたブランチを削除します。

```

## ファイルのリファクタリング
バージョン管理されたファイルの再配置と削除

```
$ git rm "[file]"
作業ディレクトリからファイルを削除し、削除をステージングします

$ git rm --cached "[file]"
バージョン管理からファイルを削除しますが、ファイルをローカルに保存します

$ git mv "[file-original]" "[file-renamed]"
ファイル名を変更し、コミットの準備をします
```

## トラッキング
一時ファイルとパスを除外する

```
.gitignoreで指定されたパターンに一致するファイルはgit管理しないようになります

*.log
build/
temp-*

$ git ls-files --other --ignored --exclude-standard
このプロジェクトのすべてで、無視されたファイルを一覧を表示します
```

## 一時的に作業ファイルを保存する
不完全な変更を保存したり復元できます

```
$ git stash
変更されたすべてのファイルを一時的に保存する

$ git stash pop
最新の一時保存したファイルを復元する

$ git stash list 
一時保存したすべてのファイル一覧を表示する

$ git stash drop
最後に一時保存したファイルを削除する
```


## gitの履歴
プロジェクトファイルの履歴を確認します

```
$ git log
現在のgitの履歴を一覧表示する

$ git log --follow "[file]"
ファイルのバージョン履歴をリネームも含めて表示する



$ git diff "[first-branch]...[second-branch]"
2つのブランチ間の差分を表示します

$ git show "[commit id]"
指定されたコミットのメタデータとコンテンツの変更を出力します。
```

## やり直し
間違ったcommit履歴へ戻る

```
# git reset "[commit id]" 
[commit]の後にすべてのコミットを元に戻し、ローカルに変更を保存します

# git reset --hard "[commit id]"
すべての履歴と変更を破棄します
```

## 変更をリモートリポジトリと同期する
変更をリモートリポジトリから取得したり、リモートにあげたりする

```
$ git fetch "[origin]"
リモートリポジトリからすべての履歴をダウンロードする

$ git merge "[origin]"/"[branch]"
リモートリポジトリのブランチを現在のローカルブランチに結合する

$ git push "[origin]" "[branch]"
ブランチをすべてアップロードするローカルブランチはGitHubにコミットする

$ git pull
リモートリポジトリの履歴をダウンロードし、変更を組み込む
```

## GitHubトレーニング
GitHubとGitを使用する方法の詳細を学ぶトレーニングチームにメールを送信するか、イベントスケジュールとプライベートクラスの可用性を学ぶためにWebサイトを訪れてください

mail: training@github.com
web:  training.github.com


## まとめ
初めて翻訳系の記事を書きました。
これだけの量で結構時間がかかってしまいました。

個人的に知らなかったのが `git ls-files --other --ignored --exclude-standard` ぐらいでした！

今後の勉強の為にもまた翻訳系チャレンジします


## 参考先
- [github-git-cheat-sheet](https://services.github.com/on-demand/downloads/github-git-cheat-sheet.pdf)