(1)はじめに
最近、業務でGitを使うことになり、勉強をはじめたばっかりの初心者です。
そもそも、PULL!?PUSH!?リポジトリ!?みたいな状態だったので、初歩的なことから勉強してみましたので備忘録として残していこうと思います。
(基礎的なことしか書いてないです)
(2)用語の説明
リポジトリについて
リポジトリとは、フォルダ、ファイル、ソースなどを保存しておく場所のことを指す。
Gitでは以下の2種類存在する。
・リモートリポジトリ:サーバー上に配置され、ここでチームで共有する。
・ローカルリポジトリ:ユーザーそれぞれのPC上に配置されている。
Aさんと同じソースを共有しているとすると、リポジトリは、こんな感じ。
詳細には、リポジトリについてはこのようになっている。
masterブランチ(オレンジで囲ったところ)はデフォルトでできる。
・リモートリポジトリ:デフォルトで「origin」と言う名前がつけられる。
・リモート追跡ブランチ:「リモートブランチ」とも呼ばれる。リモートリポジトリを追跡するブランチ。リモートリポジトリのブランチ名を引き継ぐ。(リモートリポジトリが、「mybranch」だったら、リモート追跡ブランチは、「origin/mybranch」となる)
ブランチについて
作業履歴を分岐して記録していくもので、他のブランチに影響されない。
この図では、masterブランチとmybranchが存在する。
実際にどこで使うの?と思ったので、実際にgit使っている方に聞いてみたところ、「Develop(開発用)」ブランチを作成して本番環境と分けたりするらしい。
(あと、この記事には書いてないけどコンフリクトが起きた時とか)
ブランチ関連のGitコマンドは…
・ブランチの作成(mybranchを作成する)
git branch mybranch
・ブランチに入る(mybranchに入る)
git checkout mybranch
(ブランチに)入るなのに、ホテルのチェックインみたいな感じで"checkin"じゃないんだとモヤモヤしてました。
"checkout"は、英語で、「(図書館で本を)借りる」という意味もあるようで、それからきているみたい。
(3)リモート・ローカルリポジトリの作成方法
2パターン紹介する。
方法1 : リモートリポジトリを作成してクローンする(コピーみたいなイメージ)
①リモートリポジトリの作成
②初めてGit Hubを触る際は、SSHキーの設定が必要となる。
※SSHキーの設定は、ここを参考にしました。
https://qiita.com/shizuma/items/2b2f873a0034839e47ce
③ローカルリポジトリを作成したい場所に移動して、リモートリポジトリ(①)をクローン(コピー)する
git clone git@github.com:[ユーザー名]/[リモートリポジトリ名].git```
※赤枠のところに、```git@github.com:[ユーザー名]/[リモートリポジトリ名].git```があるので、コピーしてもOK
<img width="1216" alt="スクリーンショット 2020-06-02 23.41.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/f9fd4f16-b446-b356-fd5a-1821adce155c.png">
## 方法2 : ローカルリポジトリを作成して、pushする。
### ①リモートリポジトリの作成
方法1の①と同じ
### ②初めてGit Hubを触る際は、SSHキーの設定が必要となる。
方法1の②と同じ
### ③ローカルリポジトリを作成したい場所に移動して、ローカルリポジトリの作成
```cd [ファイル]
git init```
### ④ローカルリポジトリ(③)をリモートリポジトリ(①)にPUSH
```git add .
git commit -m "first commit"
git remote add origin git@github.com:[ユーザー名]/[リモートリポジトリ名].git
git push origin master```
# (4)pull
なんとなく分かってきたところで、pullを扱う。
リモートリポジトリからローカルリポジトリへ最新版を融合(マージ)させるイメージ。
<img width="502" alt="スクリーンショット 2020-06-02 22.25.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/c16b2544-aedb-82ba-f717-a7291c3d19e1.png">
Gitコマンドはこれだけ。
```git pull```
今回は、masterブランチのみを考える。
内部では、fetch、mergeという処理をしている。
<img width="461" alt="スクリーンショット 2020-06-02 22.46.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/760916b9-e30b-75b9-b2f6-5b89a0d7639b.png">
# (5)push
pushするときは、以下の流れで行う。
```git add .
git status
git commit -m 'message'
git push origin [ブランチ名]```
git status では、add(ステージングエリアに追加)はされたけど、commit(ローカルリポジトリに反映)されていないものを確認することができる。(ファイルが追加されたよ〜とか)
<img width="461" alt="スクリーンショット 2020-06-02 22.43.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/6d8e6ee3-5810-c8ac-f5e8-2614bb4c0bb4.png">
ちなみに、masterブランチのみを考えると
```git add .
git status
git commit -m 'message'
git push origin master```
<img width="461" alt="スクリーンショット 2020-06-02 22.45.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631554/1baacf26-428c-3341-1dc9-f4345cdcda37.png">
(6)まとめ
なんとなく理解した気がするのですが、やっぱり難しい…
コンフリクトの解消法とか、まだ完全に理解しきれてないので、いつかまとめようと思います。
Gitに関しては、慣れるのみなんだろうなあと思っています。