GitHub for Atom の機能とできること、できないこと

# [GitHub for Atom](https://github.atom.io/)

Atom 公式の GitHub Package らしい。
Atom 1.18.0 以降に標準で搭載されている。
（現在は 1.18.0 はまだリリースされていないので Atom Beta でのみ使用可能）

個人的にとても欲しい機能が一部含まれているので試しに使っているので、メモがてら。
わかっていないことが多いので、内容のご指摘やアドバイスなど積極的に求めております。 :bow:

※ ひとまず Mac で確認したので、ショートカットは環境によっては参考にならない可能性があります

# Tab

> Atom's newest core package brings Git and GitHub integration right inside your editor!

とのことで、ウィンドウ右部に Git Tab と GitHub Tab が追加されている

## Git Tab

`Cmd+Shift+9` で開いたり閉じたりできる。

**Unstaged Changes / Staged Changes**

Unstaged/Staged なファイルの一覧が表示されている。
選択すると各ファイルの差分が表示される。

**Commit**

コミットメッセージの入力欄と Commit ボタンがある。
Commit ボタンの右には *1行目の残り文字数* が表示されている。

## GitHub Tab

`Cmd+Shift+8` で開いたり閉じたりできる。

GitHub へのログインを求められる。

現在のブランチと GitHub 上の p-r を紐づけることができる。
紐づけることで、その p-r の Conversation を Atom 上で閲覧することができる。

# Command

各コマンドが git コマンドのどれに相当するかを書いておきます。
（git 関連の GUI でいつも知りたいのはこれなので）

## GitHub: Push

```shell-session
$ git push origin {current_branch}
```

remote tracking branch がない場合、現在のブランチ名で新規に作成される。

## GitHub: Pull

```sh
$ git pull origin {current_branch}
```

remote tracking branch がない場合は何も起きない。

## GitHub: Clone

Clone from: `hoge.git`
To directory: `/path/to/clone`

```sh
$ git clone hoge.git /path/to/clone
```

## GitHub: Fetch

```sh
$ git fetch origin {current_branch}
```

`origin` 以外から fetch したいときはどうすればいいんだろう？

## GitHub: Commit

**staged changes が１つのない、あるいは Commit message が空の場合**

Commit message 入力欄にフォーカスする。

**staged changes があり、 Commit message が入力されている場合**

```shell-session
$ git commit
```

## GitHub: Stage All

```shell-session
$ git add .
```

## GitHub: Force Push

```shell-session
$ git push -f origin {current_branch}
```

## GitHub: Unstage All

```shell-session
$ git reset
```

## GitHub: Toggle Git Tab

上記 Git Tab を開いたり閉じたりする。

## GitHub: Toggle GitHub Tab

上記 GitHub Tab を開いたり閉じたりする。

## GitHub: Toggle Git Tab Focus

Git Tab にフォーカスする。

## GitHub: Toggle GitHub Tab Focus

GitHub Tab にフォーカスする。

## GitHub: Open Issue Or Pull Request

現在のブランチに紐づいている p-r のページを開いてくれる……のではなく、 Issue/p-r の URL の入力を求め、入力された URL のページを開いてくれる。

せめて、 Issue/p-r の番号だけでページを開いてほしい。
いちいち、 `https://github.com/name/repos/issues/1` とか打つの面倒。

## GitHub: Show Waterfall Diagnostics

GitHub for Atom が裏で行っている git の内部処理ひとつひとつにかかった時間を表示している様子。
（なんのための機能かは不明……）

## GitHub: Undo Last Discard in Git Tab

何をする機能なのかよくわからない……。
（どなたか教えていただけると助かります :confounded: ）

# 雑感

調べたり使ったりしてみて思ったこととか。

**行単位で stage/unstage できるのが便利**

既存の様々なエディタで使えるであろうこの機能はやはり便利（Emacs の magit とか）。
Atom でも他にこれができるパッケージとかあるのかもしれない。少なくとも atomatigit という magit にインスパイアされたパッケージではできる（のだけど、このパッケージは重いのと magit とホットキーが違ったり機能が不足していたため、結局使わなくなった）。

**ブランチに p-r を紐づけるのが面倒**

GitHub Tab には現在のブランチに紐づく p-r が表示されていて、そこから p-r に対するコメントが表示できたりするのだけど、そのためには現在のブランチが紐づく p-r の URL を入力する必要があって、これが面倒。
自動で紐づける方法があれば便利だと思うけど……。

~~**名前に `/` が含まれるブランチはブランチリストに出てこなくてつらい**~~

~~git 管理下のファイルを開いているとき、ウィンドウ右下に現在のブランチ名が表示されていて、クリックすることでブランチの選択（切り替え）ができるのだけど、この一覧に `/` が含まれるブランチが表示されない（他にも同様の現象の対象となる記号があるかも）。（他のパッケージを使わずに） Atom 上でブランチを切り替える方法が他にないようなので結構不便。~~

バージョン 0.2.0 でローカルにあるブランチが全て選択できるようになってました。

**Atom 上で Issue/p-r のページが見れるのは便利**

なのだけど、コメントを追加できないので、結局ブラウザで開き直すことに。
ちなみに GitHub Tab の p-r 名の上の `name/repos#1` の部分をクリックするとブラウザで開いてくれる。