【Git】コマンドまとめ　初学者用

# 対象の方
この記事はGitの基礎学習した人が復習に使う、もしくは軽くgitの概要を知りたい人向け。
自分。

# なぜこの記事を書いたのか
以前まで、GUIに頼っていたので、CUIでバージョン管理ができるようになりたかった。
理由としては、CUIで操作できた方がより自由にgitを扱えるため。
（あと、CUIで扱っている方がかっこいいため）

# コマンド

``git config --global user.name "(your name)"``
``git config --global user.email "(your email)"``
必須の設定、ユーザー名とメールアドレスの設定

``git config --global color.ui true``
色付けをして見やすくなる

``git config --global alias.aliasname 元のaliasにしたいコマンド名``
エイリアスを作る(ショートカットのこと)

```
git config --global alias.co checkout
//　この後からgit checkoutはcoで発動させることができる
```

``git config -l``
設定の確認

``git config --help``
``git help config``
コマンドの確認

``git init``
リポジトリにGitを対応させる

``git add``
ステージングにあげる

``git add .``
全ての変更をいっぺんにステージングにあげる

``git commit``
リポジトリにあげる

``git log``
ログ確認（コミットの情報などが記載されている）

``git log --oneline``
短くログを表示

``git log -p``
コミットの変更された場所を確認

```terminal
commit 549fd1b9db6d27e3d5d86d91667e7779f43cadf2 (HEAD -> master)
Author: Tomoaki Yoshinaga <naruto1439m@gmail.com>
Date:   Sun May 3 18:35:25 2020 +0900

    initial commit　　//コミット名

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..89b24ec
--- /dev/null　　 //何もないところから
+++ b/index.html //index.htmlが生成された
@@ -0,0 +1 @@ 　 //変更された行
+line 1　　　　　 //変更された箇所
```

``git log --stat``
どのファイルが何箇所変わったかを(簡略化して)見ることができる

```
commit 549fd1b9db6d27e3d5d86d91667e7779f43cadf2 (HEAD -> master)
Author: Tomoaki Yoshinaga <naruto1439m@gmail.com>
Date:   Sun May 3 18:35:25 2020 +0900

    initial commit

 index.html | 1 +
 1 file changed, 1 insertion(+)
```

``git status``
変更されたのみなのか
ステージングにいるのか
それともコミットした後なのかを見ることができる

``git checktout -- filename``
でファイルの変更を取り消すことができる

``git diff``
ステージングに上がっていない変更のみが見れる
　
``git diff --cached``
ステージングに上がっている変更のみ見れる

``git rm``
``git mv``
git管理下のファイルを移動し足り削除するときはlinuxコマンドでそのまま変更するのではなく、gitコマンドを使って行う必要がある

``.gitignore``
git管理下から外すために使うファイルのこと
.gitignore以下のディレクトリにのみ適応される

``git commit -m "commit message"``
ワンラインでコミットする

``git commit --amend``
直前のcommitと現在のステージングに上がっているものを同じコミットにまとめる、このコマンドを使うとエディタが開く

``git commit -am "commit message"``
git addとgit commitを同時に行う

``git show``
コミットの詳細情報を見ることができる

``git reset --hard HEAD``
以前のコミットした時の状態に戻る
HEADは直前のコミットのこと

``git reset --hard HEAD^``
HEADの一つ前に戻る

``git reset --hard ORIG_HEAD``
前回HEADだったコミット（今は違う）を指定して戻る
間違って必要なコミットを取り消してしまった時に使う

``git branch``
現在のブランチの確認

``git branch branchname``
ブランチの作成

``git checkout branchname``
ブランチの切替

``git checkout -b branchname``
branchを作った後に、作ったbrachに切り替える

``git merge branchname``
主にしたいブランチに切り替えた上で、統合したいブランチ名を指定する

``git branch -d branchname``
不要なブランチを削除

``git branch --merged``
既にmergeされたbranchの一覧を見ることができる

``git branch --no-merged``
mergeされていないbranch一覧

``git stash``
一時的に変更内容を退避することができるのがstash
まだ作業中なのでcommitしたくない、というときに使われる

```terminal
$ git add filename
// ステージングにあげる
$ git stash save
// stashにステージングにある変更を退避させる
$ git stash list
// stashに保存されているもののリストを見る
$ git stash pop
// stashから戻す
```

``git tag``
タグ一覧

``git tag tagname``
コミットの一意の文字にわかりやすい名前をつける

``git tag -d tagname``
タグを消す（コミットを消すわけではない）

``git clone url名``
リモートリポジトリをローカルにコピーする

``git push origin master``
リモートリポジトリにローカルリポジトリの変更（commit等）を反映させ、リモート追跡ブランチの更新も行う

``git pull origin master``
リモートリポジトリの変更をリモート追跡ブランチに適応させ、現在いるブランチ（カレントブランチ）にのみその変更をmergeする

``git fetch origin master``
リモート追跡ブランチにリモートの変更を適応するもの。
これはローカルブランチに変更が加わるわけではないので注意

# 最後に
この記事は自分用でもあるので、説明は少しざっくりしている部分が多いです。ですので、他に気になったことや、別途知りたい事がありましたら、他の記事を参考にしていただけると嬉しいです。
また、表現の誤りや、コマンドのタイポがありましたら、報告してくださると助かります。