GitHub導入

<h1>Gitの導入</h1>
経緯：Gitを実務で使用する為
目的：Gitの導入~基本的な操作を備忘録としてまとめておく為

<h2>1.Gitインストール</h2>
https://gitforwindows.org/
・デフォルト設定でインストール


<h2>2.初期設定</h2>
・Gitホームページにてアカウント作成
・Git Bashを開き以下コマンドで設定を行う

```bash
git config --global user.name "example"
git config --global user.email example@example.com
```

<h2>3.Git Bashにおける基本的なコマンド</h2>
・ローカルリポジトリの新規作成

```bash
git init
```

・ファイルの変更をステージングエリアへ保存

```bash
#追加(個別ファイル)
git add {ファイル名}
#追加(全ファイル)
git add .
#削除
git rm {ファイル名}
```

・ローカルリポジトリにコミット

```bash
git commit {ファイル名}
#コミット後変更内容を表示する
git commit -v
#エディタを立ち上げずにメッセージ付きでコミット
git commit -m "{メッセージ}"
```

・リモートリポジトリにプッシュ※事前にGitHubホームページからリポジトリを作成すること。

```bash
#ローカルリポジトリをリモートリポジトリ(GitHub)に登録
git remote add origin https://github.com/{ユーザ名}/{リポジトリ名}.git
#ローカルリポジトリの内容をリモートリポジトリへ送信※masterブランチの場合
git push -u origin master
```

・Gitリポジトリのコピーを作成する

```bash
git clone {リポジトリ名}
＃ex.GitHubにあるAtomプロジェクトをローカルリポジトリに作成する
git clone https://github.com/atom/atom.git
```

・gitの状態を確認

```bash
#現在の変更状況を確認
git status
```

・変更差分を確認(add,commitする前に使用)

```bash
#ワークツリーとステージとの差分
git diff
#ステージとリポジトリとの差分
git diff --staged
```

・コミット変更履歴を確認する

```bash
#コミット履歴を確認
git log
#コミット履歴を1行で表示
git log --oneline
#ファイルの変更差分を表示する
git log -p {ファイル名}
#コミット履歴を表示(コミット数を制限)
git log -n {コミット数}
#ファイルの差分を表示する
git log -p {ファイル名}
```

・ワークツリーのファイルへの変更を取り消す

```bash
git checkout -- {ファイル名}
git checkout -- {ディレクトリ名}
#全変更を取り消す
git checkout -- .

#補足.
#"--"を付けているのは，ブランチ名とファイル名が被った時に
#どちらを指しているのかGitが分からなくなるのを避ける為
```

・ステージした変更を取り消す

```bash
git reset HEAD {ファイル名}
git reset HEAD {ディレクトリ名}
#全変更を取り消す
git reset HEAD .

#補足.
#上記はステージへのみ反映されるので，
#ワークツリーへも反映したい場合は追加で「git checkout」も行う
#「HEAD」は最新のコミットの事を指している
```

・直前のコミットをやり直す

```bash
git commit --amend
#補足.
#リモートリポジトリにPushしたコミットはやり直したらダメ！
```

・Gitの管理から外す
　ex
　→自動生成されるファイル
　→パスワードが記載されているファイルetc..

```bash
#リポジトリ&ワークツリーから削除
git rm {ファイル名}
#ディレクトリを含めてを削除
git rm -r {ディレクトリ名}
#リポジトリからのみ削除※.gitignoreに追記しておくこと
git rm --cached
#削除後元の状態に戻す
git reset HEAD {ファイル名}
git checkout index.html
```

・リモートとのやり取り

```bash
#リモートを表示
git remote
#対応するURLを表示
git remote -v

#リモートリポジトリを新規追加する
git remote add {リモート名}　{リモートURL }

#リモートから情報を取得するのには2種類のやり方がある

#1.リモートから情報を取得する(フェッチ)
#ローカルのremotes/リモート/ブランチに情報が格納される
git fetch {リモート名}
#上記で取得した情報場所に移動するためにブランチ情報を確認
git branch -a
#ワークツリーの内容を「remotes/origin/master」に切り替える
git checkout remotes/origin/master
#元のワークツリーの内容に切り替える
git checkout master
#originリポジトリのmasterブランチの内容を自分のワークツリーに統合する
git merge origin/master

#2.リモートから情報を取得する(プル)
#リモートから情報を取得してマージする
#「git pull」のみでもOK
#「git fetch origin master」「git merge origin/master」コマンドと同じ事を1行で行える
git pull {リモート名} {ブランチ名}

#リモートの詳細情報を表示する
git remote show {リモート名}

#リモートを変更する
git remote rename {旧リモート名} {新リモート名}
＃リモートを削除する
git remote rm {リモート名}
```

・ファイルの移動を記録する

```bash
git mv {旧ファイル}{新ファイル}
#以下のコマンドと同じ
#ファイル名を変更
mv{旧ファイル}{新ファイル}
git rm {旧ファイル}
git add {新ファイル}
```

・コマンドにエイリアスを付ける

```bash
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.co checkout
```

・その他UNIXコマンド(以下参考になるサイト)
http://www.ritsumei.ac.jp/~tomori/unix.html

<h2>4.指定のファイルをバージョン管理からはずす方法</h2>
1.バージョン管理を行っているフォルダに「.gitignore」を作成
2.「.gitignore」ファイルにバージョン管理から外したいファイル名を指定する


<h2>6.その他知識</h2>
・Vimの編集
「i」を入力すると編集可能となる
編集完了したら「esc」を押す
「:wq」を入力して「Enter」

・コミット時のコメント
1行目：変更内容の要約
2行目：空行
3行目：変更した理由

・bashで画面をクリアする
「Ctrl」+「l」

<h2>Gitに関して参考になるサイト(随時更新)</h2>

https://zukulog098r.com/git/

https://qiita.com/KosukeSone/items/514dd24828b485c69a05