cloud 9からGitHubに初めてpushする方法(初学者向け)

## cloud 9からGitHubに初めてpushする方法とGitコマンド(初学者向け)
awsのcloud9を使ってアプリケーションを作り始めると、portfolioが必要なんじゃないかと考え出しますよね。そんな時GitHubにコードのソースをpushしておけばコードの管理もできますし、portfolioとしても機能します。
### Gitとは
Gitとはなんのためにあるのか？一言で言うと、ファイルのバージョンを管理するものです。
ファイルのバージョンを管理できれば、いつ誰がファイルを修正したのかがわかるようになります。むしろそれらができなければ問題ですよね。一般的にファイルのバージョンの管理システムはsvn(subversion)と言われていますが、Gitはsvnよりもおのおのの開発者がそれぞれの機能を個別に一つのアプリケーションに実装していくのに、コストが低いと言われています。導入しない手はありませんね。
https://github.co.jp/
## 前提
- GitHubのアカウント登録 
   https://github.co.jp/

- awsの登録
  https://aws.amazon.com/jp/

## 手順
- cloud9の作業ディレクトリでgitのローカルリポジトリを作成する
- 全ての作業フォルダをステージに追加して、コミットする
- cloud9でSSHキーを作成する
- GitHubにリモートリポジトリを取得する
- cloud9からGitHubのリモートリポジトリを登録しpushする

## cloud9の作業ディレクトリでGitのローカルリポジトリを作成する

~~~
~/environment $ cd mydir
~/environment $ pwd
/home/ec2-user/environment/mydir
~~~
作業ディレクトリに移動します

~~~
//gitフォルダの作成
$ git init
//確認
$ ls -a
//.gitを確認
$ ls.git
- branches        config       HEAD   index  logs     refs
- COMMIT_EDITMSG  description  hooks  info   objects
~~~
.git initコマンドにより作成された.git は隠しファイルです。ls .gitコマンドによって隠しファイルの中身を表示させられます。
カレントディレクトリを作業ディレクトリに移動して、全てのファイルやフォルダをgitのローカルリポジトリに追加します。

## 全ての作業フォルダをステージに追加して、コミットする

~~~
$ git add .

~~~

続けて

~~~
$ git commit -m "first commit"
~~~
-mはoptionで、messageを追加できます。ファイルの修正を行ったことをメッセージを添えることでわかりやすくなってます。

## cloud9でSSHキーを取得する

GitHubとCloud9間でデータの受け渡しをする際の鍵を作ります

~~~
$cd ~/.ssh
~~~
.sshファイルに移動します

~~~
$ ls -ltr
~~~
続けて

~~~
$ ssh-keygen
~~~
続けて

~~~
$ cat ~/.ssh/id_rsa.pub
~~~
公開鍵を表示させて、コピーします。
コピーしたssh公開鍵をGitHubのリモートリポジトリに追加します。

## GitHubにリモートリポジトリを作成する

- GitHubのご自身のページトップのツールバーにrepositoriesをクリック
- newボタンをクリック
- Repository nameに任意で記述して、defaultのままcreate repositoryをクリック（有償利用の方はprivateでも良いと思います)
- トップページの右上のアイコンののドロップダウンからsettingをクリック
- personal settingsのSSH and GPG keysをクリック
- 先ほどコピーしたsshの公開鍵をSSH keysへ貼り付けます。
- 作成したリポジトリをクリックし、codeのページでsshのURLをコピー

 コピーしたURLをcloud9で登録に使います。

## cloud9からGitHubのリモートリポジトリを登録しpushする
cloud9にて

~~~
~/environment $ cd mydir
~/environment $ pwd
/home/ec2-user/environment/mydir
~~~
自身の作業ディレクトリに移動します

~~~
$ git remote add origin https://github.com////////
~~~
コピーしてきたsshのURLをoriginの後に貼り付けます。
このコマンドでorigin以下のURLを登録できます。
originとすることで、pushするたびにURLを記述しなくてよくなります。

~~~
$ git push -u origin master

~~~

-uとすることで次回から同じリポジトリなら $ git pushのみでローカルリポジトリのファイル内容をリモートリポジトリに送信できます。これでcloud9からGitHubに初めてpushする方法は以上です。
ちなみにmasterはブランチのことです。
一つのアプリケーションを複数人で開発し始めた時にブランチを切ってmasterと同じ内容のファイル群を自身の環境に引っ張ってきてのちにmasterに統合していく方法を取ることができます。今回はmasterブランチをリモートリポジトリに作成しました。

## 補足　Gitコマンド

|git command |     概要         |
| ---------- | ----------- |
| git add .          |  ステージに追加(ローカルリポジトリ)      |
| git add <ファイル名>  | ファイルをステージに追加(ローカルリポジトリ)|
| git add <ディレクトリ名>| ディレクトリをファイルをステージに追加(ローカルリポジトリ)|
|git commit |ステージに変更を記録する|
| git commit -m "message"| メッセージを添える|
| git commit -v | エディタが立ち上がり変更場所を確認できる　|
|git status | ワークツリーとステージの違いをみる/ステージとリポジトリの違いをみる |
| git diff |git add する前の変更差分をみる(ワークツリーとリポジトリの差分)　|
| git diff --staged | ステージとリポジトリの変更差分 |
| git log | 時系列で変更履歴を新しい順で表示する　|
| git log --oneline | 一行で表示する　|
| git log -p <file名>　| ファイルの変更差分を表示する|
| git log -n <コミット数> | 表示するコミット数を制限する |
| git log -p -n1 | 直前の修正文のものだけを表示する |
| git rm <file名>　| removeする |
| git rm -r <directory名>　| removeする |
| git rm --cashed <file名> | ワークツリーに残してリポジトリ、ステージから削除したい時 |
| git rm -r --cached . | .gitignoreのキャッシュを削除する|
| git reset HEAD <file名> | 削除したファイルを元に戻す　|
| git mv <旧file><新ファイル> | ファイルの移動を記録する |
| git remote add origin http://github.com~~~~~~~~~~ | リモートリポジトリを登録　|
| git push <リモート名><ブランチ名> | リモートリポジトリへ送信　|
| git push -u origin master | -uにより次回から記述を省略して送信 |
| git config --global alias.ci commit | コミットするときの記述を省略する（エイリアス） |
| git config --alias.st status | git statusコマンドを stに省略する |
| git config --global alias.br branch | ブランチの記述を省略する |
| git config --globalnalias.co checkout | checkoutの記述を省略する |
| .git ignore <file名> | 指定したファイルを除外する　|
| .git ignore dir/  | ディレクトリ名を指定 |
| git checkout <file名> | 変更を元に戻す |
| git checkout <directory名>　| 変更を元に戻す |
| git checkout -- | 全変更を取り消す |
| git checkout --<file名> | ワークツーリーの状態をステージと同じにする |
| git reset HEAD <file名> | 最新のデータに上書きする |
| git reset HEAD | 全変更を取り消す |
| git commit --amend | 直前の変更をやり直したいとき　|
| git remote | リモートを取得する |
| git remote -v | URLと名前を取得する |
| git remote show | リモートの詳細情報を表示する |
| git remote rename <旧リモート名><新リモート名> |リモート名の名前を変更 |
| git remote rm <リモート名> | リモート名の削除 |
| git fetch <リモート名> | リモートからローカルへ情報を取得する |
| git merge |fetchによってローカルに取得したブランチをワークツリーへ取り込む |
| git branch -a | リモートリポジトリを全て表示する |
| git pull <リモート名><ブランチ名> | fetchとmergeをまとめたコマンド |
| git branch <ブランチ名>　| ブランチを作成 |
| git branch -a | ブランチの一覧を表示 |
| git checkout <ブランチ名> | ブランチを切り替える |
| git checkout -b <新ブランチ名> | ブランチを新規作成して切り替える |