【自分用】Git/GitHub

エンジニアには、GitとGitHubは必須スキルであるので、自分用メモです。

## リポジトリ系
リポジトリとはファイルの保管庫。

### リモートリポジトリ
専用のサーバに配置して複数人で共有するためのリポジトリです。
### ローカルリポジトリ
ユーザ一人ひとりが利用するために、自分の手元のマシン上に配置するリポジトリです。

※プッシュされたほうがリモートレポジトリ。するほうがローカルレポジトリ。
ローカルレポジトリ→リモートレポジトリ
という流れ（どちらも平等だが立場の話）でプッシュされる。

##コミット系
![intro3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611952/7455f28c-2ab8-29ae-52b1-31dccfdcc805.png)
> さるかわより引用 https://backlog.com/ja/git-tutorial/intro/03/

### コミットとリビジョンの微妙なニュアンスの違い
コミットとリビジョンは混合しやすい言葉だが、コミットは１つだけのコミットを指すのに対し、リビジョンは指定したコミットまでの全ての反映された成果物を指す。

※コミットの会話例→「例のコミットを送って」→「プッシュされてくる(リポジトリをローカルからリモートに反映されてくる）」
※リビジョンの会話例→「例のリビジョン送って」→「指定したコミットIDまで全てが反映された成果物が送られてくる」

###コミットメッセージ
コミットするときにコミットした内容をメッセージとして残す。
「例」
1行目 : コミットでの変更内容の要約
2行目 : 空行
3行目以降 : 変更した理由
だいたいは１行で終わるが、ものによっては３行以降で。

## ワークツリーとインデックス
![intro4_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611952/3563e3cd-60dd-7c0c-8de2-972118f65b77.png)
> さるわかより引用 https://backlog.com/ja/git-tutorial/intro/04/

ワークツリー:自分のデスクトップ上のフォルダ等
インデックス:コミットの対象となる差分が入る領域。Git内で作成される。
リポジトリ:コミットの保管庫

## よく使うLinuxコマンド
| コマンド名                 | 何の略語か       | 説明                                                                                                         | 
| -------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------ | 
| lsコマンド                 | List Segments    | カレントディレクトリに存在するファイルやディレクトリなどを表示する                                           | 
| cdコマンド                 | Change Directory | カレントディレクトリを変更する                                                                               | 
| vdirコマンド「ぶいでぃあ」 | 不明             | lsコマンドの「カレントディレクトリに存在するファイルやディレクトリなどを表示する」をよりわかりやすく表示する | 

## よく使うGitコマンド
| コマンド名                       | 説明                                                                                                                                                                                             | 
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 
| git status                       | ワーキングツリーとインデックスの状態を表示するコマンド                                                                                                                                           | 
| git clone {クローンするgitのURI} | 指定したリモートレポジトリ(コピー元)からカレントディレクトリにレポジトリをクローンする。                                                                                                         | 
| git commit                       | ステージングされた変更をコミット（確定）する。ステージング≒インデックス                                                                                                                         | 
| git log                          | 今までのコミット履歴を確認するコマンド。                                                                                                                                                         | 
| git add {path/to/file}           | ワーキングツリーの変更内容をインデックスに追加するコマンド。.を指定した場合は、カレントディレクトリ配下すべてのファイルを対象とする。                                                            | 
| git push -u origin master        | ローカルレポジトリの指定したブランチ（今回の例はmaster)を指定したリモートレポジトリ（今回の例はorigin)へプッシュする。今回は初めてのpushなので-uオプションをつけてmasterブランチを作成している。 | 

## 感想
考えてやるものじゃなくて作業の流れとして考えずにやれるように。