Gitについて

# Gitについて

## Gitとは
分散型バージョン管理システム
ただデータを保存するだけでなく誰がいつどこを編集したのか履歴を保存管理できる仕組み

## Gitにできること
* 新旧のファイルを一括管理
* 簡単に古いファイルに戻せる
* チームでファイルの変更履歴を共有
* チームで修正した部分を統合
* チームでの業務を効率化できる
* 様々なファイルを管理可能

## GitとGitHubの違い
「Git」は、「ソースコードのバージョンを管理するツール」
対して「GitHub」は、「Gitを利用した、開発者を支援するWebサービス」

## gitに出てくる語句
### ワークツリー
Gitで管理しているファイルでaddする前の階層

### インデックス
これからコミットするファイルの階層
## Gitの基本コマンド
## ローカルでGitを使えるようにする（git init）
`$ git init`
ローカルでリポジトリを新規作成する、または既存のリポジトリを初期化する

## ファイルの変更（追加/変更/削除）を確認する（git status）
`$ git status`
#### コマンドの実行結果の見方
__①Changes to be committed__  
コミットする予定の変更したファイルの一覧（インデックスに反映されているファイル一覧）
__②Changes not staged for commit__
addされていないかつ一度コミットされたことのある「変更のあった」ファイル一覧
__③Untracked files__
新しく作ったファイルでまだ一度もコミットしたことがないファイル一覧

### 変更履歴を残す準備をする（git add）
`$ git add ファイル名`
`$ git add .` ②③全てのファイルを追加

指定したいファイルの相対パスがわからなくなったら`$ git status`で調べると早い

### 変更履歴をローカルリポジトリに保存する（git commit）
`$ git commit -m "コミットメッセージ"`
##### コミットメッセージとは
「なぜコードを変更したのか」という理由を誰が見てもわかるようにするためのものなので、
わかりやすくまとめておくようにする。
※コミットメッセージに関してはまた次回記事を書きます。


### ブランチを作成する （git branch）
`$ git branch ブランチ名`
##### ブランチとは
履歴の流れを分岐して記録していくためのもの。
分岐したブランチは他のブランチの影響を受けないため、同じリポジトリ中で複数の変更を同時に進められる。
##### 【疑問】何故ブランチ一つは好ましくないのか
（例）ブランチ一つで実装していると、他のメンバーの作業の影響を受ける可能性がある。
その為メインのブランチから自分の作業専用のブランチを作成する。 そして作業の終わったメンバーは、メインのブランチに自分のブランチの変更を取り込んでいく。


`$ git branch`
##### ブランチ全てを表示


`$ git checkout ブランチ名`
##### ブランチを切り替える （git checkout）


## ローカルの変更をリモートリポジトリにアップロードする （git push）
`git push origin ブランチ名`
ローカルリポジトリの変更履歴をリモートリポジトリへアップロードする。
git hub を見に行くと黄色いバーが表示される。
![スクリーンショット 2022-05-14 20.17.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280943/92ec4e0e-dcbc-8e97-d13e-c47070e6db61.png)
緑のボタンを押しすすむと
chengestyleからmainにマージしたい（できるよー的なニュアンスだと認識してます） と表示が出てくる。
![スクリーンショット 2022-05-14 20.26.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280943/46026aae-8034-7c16-a707-1bf513116538.png)
下にスクロールするとmerge pull requestというボタンが出てくる。
![スクリーンショット 2022-05-14 20.29.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280943/540fd811-e74f-59bb-e9e2-3758ec08d12e.png)
ボタンを押すとgithub上でchengestyleで変更された内容がmainに統合される。統合されることを
マージと呼ぶ。

## リモートリポジトリの変更をローカルリポジトリに持ってこれる(git pull)
`$ git pull origin　リーモートリポジトリで変更されたブランチ名`

## cloud9とgit hubを連携させる方法
下記の記事がとてもわかりやすく参考になりました。
https://kosuke-space.com/cloud9-github
## 参考文献
【初心者向け】Gitとは何なのか。
https://tcd-theme.com/2019/12/what-is-git.html

Gitとは？Gitの特徴4つ｜Gitでできることや活用できる職種を解説
https://www.acrovision.jp/career/?p=2782#:~:text=Git%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%80%81%E7%B0%A1%E5%8D%98,%E9%81%8B%E7%94%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82

【 git init 】コマンド――Gitのリポジトリを作成する
https://atmarkit.itmedia.co.jp/ait/articles/2003/12/news010.html

Git入門】git status の使い方
https://26gram.com/git-status

第9話 git diff で差分を確認！【連載】マンガでわかるGit ～コマンド編～
https://www.r-staffing.co.jp/engineer/entry/20200228_1

サル先生のGit入門【プロジェクト管理ツールBacklog】
https://backlog.com/ja/git-tutorial/stepup/01/

【Gitをしっかり理解】pullとmergeとfetchは一体何をしているのか？
https://shinmedia20.com/git-pull#:~:text=4%20%E3%81%BE%E3%81%A8%E3%82%81-,git%20pull%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%EF%BC%9F,%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%99%E3%80%82