Git とは？最初から最後までスクショ付きで説明！

こんにちは、まゆみです。

みなさんは、プログラミングを日々書いていますか？(笑)

特に大きなプロジェクトを抱えている時、<font color="LimeGreen">ある一定の日まではコードが順調に実行されていたのに、ある日突然、気が付かないうちにどこかで間違えてコードが上手く実行できなくなった。。。</font>

そんな経験は一度や二度はあるはずです。


例えばあなたの飼っている猫が

<ul>
<li>パソコンのキーボードの上に寝そべってしまいコードが滅茶苦茶になってしまった。</li>

<li>しかもあなたの猫は賢くて、そのまま保存までしてしまった。</li>

</ul>


あれだけ苦労して書いたコードなのに、頭の中は真っ白ですよね。




<font color="Red">そんな時に役に立つのがGit</font>



「コードが猫に壊されてしまったので、その前の状態に戻したい」

というあなたの要望に応えてくれるものです。


では早速説明していきます

#Git とは？

Git とは、Version Control System のことです。


Version Controlとは？

では具体的に説明していきますね。


例えば、大きなプロジェクトを抱えてコードを書いている時、一日では終わらない時もありますよね。


3月3日は10行目までコードを書いた。(Version.1)

3月4日には20行目まで書いた(Version.2)

その次の日には40行目まで書いたのに、いつの間にかキーボードの上で寝落ちしてそのまま保存までしてしまった。


そんな時、コードが壊れる前のVersion 2　まで遡りたいと思いますよね。

それを可能にするのが『Git』になります。

##Git で使われる用語の説明

![見出しを追加 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/ad755ece-f8d1-a3af-da8e-bc81c4e90ba0.png)


では次にGitについて学ぶ前に知っておくべき用語の説明をします


<font color="Red">①Working Directory </font>
カレントディレクトリとも言われます。
今、自分が作業しているフォルダを指します。
ここで、Git の初期化(git init)をします。

<font color="DeepSkyBlue">②Staging Area</font>
Version.1 で保存していたファイルをVersion.2 に保存する(commit)のと、Working Directoryの中間のこと。
なぜWorking Directory から一気にcommit までしないで中間にこのような物が設けられているかというと、全てのファイルをcommit したくない時もあるから。

<font color="DarkGreen">③Local Repository</font>
あなたのパソコン内に作られるファイルの保存場所。
Local Repositoryで、あなたの作ったファイルは安全に保存され、ファイルが壊れてしまった後も、遡ることができるようになります。



もし、③のプロセスをふんであなたのファイルをLocal Repository に保存した後で、ファイルが壊れてしまった場合は、コマンドラインに
『git checkout』
と打ち込めば、壊れる前の状態に戻すことができます。




##コマンドラインはGitbush がおすすめ(Windowsユーザー)

コマンドラインはMacユーザーはTerminal を　Windows ユーザーはcommand prompt を使うように勧められていますが、エンジニア向けの情報は大体Mac ユーザーを想定して書かれている。

そして、Terminal とcommand prompt じゃ、使うコマンドラインが違うので、いちいち調べなおさなくてはいけなくて面倒くさいですよね。

そう感じているWindows ユーザーに、私は<font color="Red">『Git bush』</font>をおすすめします

私のサイトに使い方を載せていますので、Mac と同じコマンドラインをWindows で使いたいという人は、こちらの説明を見ながらGit bush を使ってみてください。

➡　https://python-laboratory.com/command-line-git-bash/


##実際にGitを使って、あなたのコードを守る

では、コマンドラインを使って、実際にあなたがVersion Control したいファイルをGit のLocal Repository に保存させていきましょう


①『cd ディレクトリ名』で、あなたがLocal Repository に保存したいと思っているファイルが入っているディレクトリにいく

②『git init』とコマンドラインに打ち込むと、Gitの準備が整います(下記のスクショ参考)


![スクリーンショット 2021-03-06 160751.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/2f003bbd-6c40-4ed7-aadd-d311c282d8e6.jpeg)


※ただし、コマンドラインに『ls』(listの意味でディレクトリ内のファイルを表示してくれる)と打ち込んでも、Git のファイルは表示されません。

③Gitファイルがフォルダ内にあるかどうか心配な人は『ls』の代わりに『ls -a』と打ち込んでください。
隠れているGit ファイルも表示されます。(下記のスクショ参考)

![スクリーンショット 2021-03-06 184316.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/671f2d9b-620c-4cea-169e-fb324c226f29.jpeg)

④Gitの準備はしましたが、まだどのファイルもStaging Areaにありません。

『git status』とコマンドラインに打ち込むと、まだStaging Area にないファイルは赤色で表されます。

下記のスクショで、『chapter-1.txt』と『chapter-2.txt』と赤文字で書かれているのが分かりますね。


![スクリーンショット 2021-03-06 184652.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/9cabcec0-ee8f-01b6-4bd7-9814bda2d0e9.jpeg)

⑤git add でファイルをStaging Areaに入れる。

git add ファイル名　でStaging Area に入れたいファイルを選びコマンドラインに打ち込みます

Staging Area にあるファイルはgit statusとコマンドラインに打ち込むと緑色で表示されています

![スクリーンショット 2021-03-06 185256.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/69907edf-b893-46df-49dc-618a6f3eb564.jpeg)

今回は、chapter-1.txt ファイルのみをStaging Area に移したので、chapter-1.txt は緑色で、chapter-2.txtはまだ赤色のままで表示されています。

⑥ファイルをcommitする

commit とは、Local Repository にファイルを保存して、何かがあった時に追跡できるようにすることです。

commitするには、

『git commit -m "Complete chapter 1" 』

とコマンドラインに打ち込みます。
-m 以下の　"Complete chapter 1"は、コミットメッセージと言われるもので、あなたがどのような事をしたのかの追跡を助ける役割をします。

なので、コミットメッセージは"Complete chapter 1"ではなくても良いです。

この作業が終わると、chapter-1.txtファイルはLocal Repositoryの中に入り、例えファイルの中身がぐちゃぐちゃになったとしても、そしてそのまま保存してしまったとしても、元に戻すことができます。

##ファイルの中身が壊れてそのまま保存してしまった！

では、その時の直し方を書いていきますね。

###壊れる前のファイルに何と書いていたのかの調べ方

『git diff』とコマンドラインに打ち込むと壊れる前と後のファイルの文言を調べることができます(diff はdifferent のこと)

![スクリーンショット 2021-03-06 191114.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/5bd2cb66-c639-ad5a-16fc-33642efb0027.jpeg)


上記のスクショを見てください。

赤文字で『This is the first version』と書かれているのが壊れる前のファイルの中身です。

緑色の『+kejkdjsklafjkdsjaklf』は今のファイルに書かれているものになります。

壊れたファイルから壊れる前のファイルに戻すにはコマンドラインに

<font color="Red">『git checkout ファイル名』と打ち込むともとに戻すことができます。</font>


##もしディレクトリ内に2つ以上のファイルがある場合

ディレクトリ内にファイルが2つ以上ある時は、わざわざ1つずつStaging Area に持って行って、commit して。。。

というのは面倒くさいですよね。

その時は

『git add .』とgit add の後に半角スペースを置き　. (ドット)と打ち込むと2つ以上あるファイルも一気にStaging Area に持っていくことができます

#まとめ

Git もコマンドラインも、あなたが使うものから少しづつ覚えていけば、そんなに圧倒される量でもないし、Git を覚えれば苦労して書いたコードをうっかりして消してしまうこともなくなります。

是非、今回の記事を参考にしてくださいね。


次回の記事は『Github』について説明していきますね。

お楽しみに！！