#はじめに
初めまして、公務員からエンジニア転職を目指して勉強している者です。Gitについて改めて復習したので、まとめていきたいと思います。間違い、アドバイス等あればコメント頂きたいです。
#目次
1.概要
2.Gitの大まかな流れ
3.ブランチについて
4.GitHubと通信
##1.概要
###Gitって何?
分散型バージョン管理システム。ざっくりいうと、ファイルを増やさずに、変更履歴を管理できる。個人、チームで開発を進める時に便利なツール。
###GitHubって何?
Gitを使ったエンジニアを支援するWebサービスの事。きちんと違いがあるので気をつけましょう。
###用語
・ワークツリー:ローカル(自分)の作業環境
・リポジトリ:変更履歴を記録する場所(ローカル環境にあるローカルリポジトリ、リモート環境にあるリモートリポジトリがある)
・ローカルリポジトリリモートリポジトリへ反映させる
・コミット:変更したファイルをgitに登録
・インデックス:コミットするためのファイルを登録
・ステージング:インデックスにコミットするファイルを登録
・ブランチ:(=枝)メインのブランチとは別に変更履歴を分岐させる。そうする事で、メインは影響受けずに同時に変更を進められる
##2.Gitの大まかな流れ
1.ローカルリポジトリの新規作成をしてリポジトリを作成(最初の1回のみ)
$git innit
2.変更履歴を記録
$git commit -m "メッセージ"
※"メッセージ"には、どこを変更したか分かる様なメッセージを入れる
$git add ファイル名
※全てコミットする場合は$git add .
3.状況確認
$git diff
:リポジトリとワークツリーの変更内容を確認
$git status
:変更ファイルを確認
4.履歴の確認
$git log
:変更内容を確認
5.元に戻したい時(色々変更してエラーが出たけどどこかわからない・・・一旦戻そう!)
$git restore <ファイル名>
:ワークツリーの変更を取り消す
$git restore -staged <ファイル名>
:ステージにあげたファイル名変更をワークツリーまで戻す
##3.ブランチについて
チーム開発では、ブランチが必要になる(①を作業している時②を作業しないといけない時に同時に進められる)
1.ブランチを作成する
$git branch ブランチ名
###ブランチ名について
main : メインで作業してるブランチ
master : 公開するものを置くブランチ
develop : 開発中のものを置くブランチ
release : 次にリリースするものを置くブランチ
feature-* : 新機能開発中に使うブランチ
hotfix-* : 公開中のもののバグ修正用ブランチ
2.ブランチ一覧を表示
$git branch
$git branch -a
GitHabのブランチも含めた全てを表示
※-a : all
3.ブランチを切り替える(ブランチを作っただけでそこには移動してない)
※HEAD:自分がいるブランチ
$git switch feature
(例でfeatureとする)
$git switch -c feature2
: 分岐のブランチを作成、かつ、そこに移動
※-c : create
4.変更内容をマージ(取り込む)
$git merge feature
: 新しいコミットで、mainとfeatureを取り込める
$git merge origin/main
: GitHab上のブランチをマージしたい時
5.コンフリクト(変更内容の衝突)
→mainとfeatureで同じ箇所なのに違う編集をしてしまった
<解消方法>
①ファイルの内容を正しい方に修正
②<<,==,>>を削除
##GitHubと通信
1.初期設定
GitHubに登録→Gitの初期設定
$git config -global user.name "GitHubのユーザーネーム"
$git config -global user.email "GitHubのメールアドレス"
※ローカルにリポジトリがあれば
ローカルと同じ名前のリポジトリをGitHub上にも作る(接続)
2.リモートリポジトリの追加
$git remote add origin URL
: リモートのURLをローカルに登録する
→今後、originという名前でGitHubとやりとりできる
3.push(GitHubにコードをアップ)
$git push origin main
4.pull(ローカルに取り込み、ワークツリーに変更内容を反映)
= fetch + merge
$git pull origin main
(origin mainは省略可能)
・コンフリクトが起きたら修正が難しい
・mainブランチにいる時はpullの方が○
※fetch : ローカルに取り込むだけ
→ワークツリーに反映させたい : mergeでワークツリーに取り込む
・mainブランチ以外にいる時はfetch + merge の方が○
5.プルリクエスト(「変更のレビュー→問題なければ取り込む」を依頼する事)
6.コードレビュー
7.merge (変更するを取り込み、ブランチを削除)
#おわりに
うまくまとめれているかわかりませんが、誰かの役に立てたら良いと思います。