Gitコマンド一覧

#はじめに
プログラミング初学者が学習する際に、ほとんどの方がgitに触れると思います。
gitについえは、数多くの記事があり自分自身何度も参考にさせていただきました。
ただ、中にはそもそも解説している用語の意味がわからずとりあえずコピペでその場を凌ぐことがありました。
なので、備忘録もかねて基本的な操作について、記載します。
#git init…リポジトリを初期化


Gitでバージョン管理をするには、リポジトリを初期化しなければいけません。
その初期化を行うコマンドが以下です。(初期化を行いたいディレクトリにて実行)

```
git init
```

実行すると「.git」が作成され、「Gitリポジトリ」と呼ばれるものです。これがバージョンを管理するために必要です。

下記コマンド（ls -a）で、作成されたか確認ができます。

```
% ls -a
.               ..              .git            first_txt
```

#git add …ステージング領域へファイルを追加

ファイルを「Gitリポジトリ」で管理していくためには、記録を残すために「commit」をしなければいけません。
その「commit」するファイルをステージング領域と呼ばれるところにファイルを加えてあげる（add）必要があります。
ステージングファイルに「add」したファイルを「commit」することで、ローカルリポジトリに記録されます。
サッカーでいう、選手交代の際にタッチラインで交代を待っている選手みたいな感じです。。（わかりずらい）


その際に使用するコマンドが以下です。

```
git add example.txt
```

実行後に、「example.txt」がステージングファイルに登録されます。

また、以下のコマンドで変更ファイルをまとめてステージング領域へ追加することができます。

```
git add .
```

#git commit …リポジトリの歴史を記録

「commit」は、ステージング領域に加えられているファイルをローカルリポジトリに記録するためのコマンドです。

```
git commit -m "first commit"
```

-m はコミットに対して１行メッセージをつけるための記載です。
今回でいうと、"first commit"というメッセージをcommmitに付け加えています。
通常はコミットに対する要約を記述します。
どの作業をなんのためにしたのか、簡単に振り返られるようにするためのものです。

```
git remote add origin https://*********.git
```

一度実行すれば、今後はorigin という名前でリモートリポジトリ（GitHub）に接続できます。



#git remote add …リモートリポジトリを登録
GitHubで作成したリポジトリのパスをローカルリポジトリのリモートリポジトリとして登録する際に必要なコマンドです。
要するに、Githubとローカルリポジトリを紐づけるために実行するものです。



#git push …リモートリポジトリへ送信

ローカルリポジトリの内容をリモートリポジトリ（Github）に送信するためには、下記コマンドを実行します。

```
git push -u origin master
```
これでローカルリポジトリの変更を、リモートリポジトリのmasterにpushする
と言う意味になります。


#git status …リポジトリの状態を確


```
% git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
```

現在はmasterという名前のブランチにおり、commitするものがないと表示されています。


```
% git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   first_txt

no changes added to commit (use "git add" and/or "git commit -a")
```
この場合は、「first.txt」に変更があったことを示しています。

#git log …コミットログを確認

git commit にてコミットされたかを確認できます。
誰がいつコミットをして、差分内容を確認することができます。

```
% git log
commit 0b662f4b1d6003d6ce883c49839d0dcd18f39dae (HEAD -> master)
Author: ここにはコミットした人の名前が入ります
Date:   Wed Nov 24 16:16:27 2021 +0900

    天気模様と傘を忘れたことを記載
    
    gitの勉強のため

＊上記が発生した差分の内容

commit af49de3ea5f621a77f94b526306e30d8446e3717 (origin/master)
```
　githubの$git logを終了する方法は　[q]を入力するだけです。


"git log"にはオプションがあります。

###"git log --oneline"　…コミットメッセージの１行目のみを表示する。

```
% git log --oneline
a9ea7d3 (HEAD -> master, origin/master) second.txt をコミットから削除
d86f41d second.txtを追加
0b662f4 天気模様と傘を忘れたことを記載
af49de3 initial commit
```

コミットメッセージの１行目が最新順に表示されます。

###"git log -p"  …ファイルの差分を表示する
そのままで、ファイルの差分を表示することができます。

```
git log -p README.md
```
で確認したいファイルを限定することもできます。


#git rm …ローカルリポジトリからファイルを削除

ワークツリー（作業フォルダ）とリモートリポジトリに登録されているファイルを削除したい時に使用するコマンドです。

```
% git rm second.txt
```
これにより、ステージングファイルに「second.txt」を削除するよう申請をした状態です。
ローカルリポジトリに反映させるには、”git add”と同様にコミットが必要です。

また、ワークツリーのファイルは残しつつリモートリポジトリに登録されているファイルのみ削除したい場合は"--cached"のオプションを付けて実行する。



ディレクトリを削除したい場合は以下のように実行する。

```
% git rm -r <ディレクトリ名>
```






#git diff …変更差分を確認
```
% git diff (ファイル名を指定することも可能)
```
＊"git add"する前に変更差分を確認する際に実行します。
ステージング領域との変更箇所を表示します。


```
% git diff --staged
```
＊"git add"後（ステージング領域に追加後）に変更差分を確認する際に実行します。
"git add"したステージング領域とローカルリポジトリとの差分を表示します。


#git reset HEAD …ステージング領域に追加した変更を元に戻したい時

"git add" 等でステージに追加した変更をリセットしたいときは以下を実行します。

```
#「ファイル名」を対象にリセットする
% git reset HEAD "ファイル名"

#ディレクトリごとリセットする
% git reset HEAD "ディレクトリ名"

#全変更を対象にリセットする
% git reset HEAD .
```

指定した変更をステージング領域から取り消すだけで、ワークツリー（作業しているエディタのスペース）の
ファイルには影響を与えません。