#概要
実務開始前にGitの基本的なフロー/コマンドを復習し、備忘録として書き残す。
###前置き
記載する用語によって混乱してしまうのを防ぐため、本記事では
追跡ブランチ = ローカルリポジトリで作成/保持し、リモートリポジトリとデータのやりとりを行う際に仲介役として使用するブランチ
上流ブランチ = 追跡ブランチと紐づいているリモートリポジトリ側のブランチ
メインブランチ = ローカルリポジトリで一番メインとなるブランチ(デフォルトだとmain)
作業ブランチ = メインブランチから分岐する各作業用のブランチ
として記載する
##開発作業の事前準備
Githubのリモートリポジトリからファイルを取得する
git clone https://github.com/アカウント名/リポジトリ名.git
プロジェクトでforkを使用する場合、githubブラウザ上でforkに必要な作業を行ってからcloneする(割愛)
git clone = リモートリポジトリをローカルリポジトリに複製すること
git fork = 他人のリポジトリを自分のアカウントのリモートリポジトリにコピーすること
つまり、forkは誰かのリポジトリに対して、何らかの追加機能の実装やバグ改修を行いたい場合使用するもの
####プロジェクト全体のリポジトリを確認
git branch -a <-- -a オプションでローカル/リモートリポジトリ全て表示させ、プロジェクト全体の構成を確認 -->
####作業ブランチを切る
git checkout -b 作業ブランチ名
その後開発作業を開始する
##作業内容をリモートリポジトリにmergeするまで
ファイルの差分を確認する
git diff HEAD <-- 最新のコミット地点との差分を表示 -->
差分をステージ(インデックス)に追加する
git add ファイル名 <!-- 指定したファイルのみ追加 -->
or
git add . <!-- ワーキングツリーのファイル全て(カレントディレクトリ配下のファイルのみ) -->
or
git add -u <!-- ワーキングツリーのファイル全て(新規作成ファイルは無視) -->
or
git add -A <!-- ワーキングツリーのファイル全て -->
ステージングされているファイルの差分を確認(commit前の2重チェック)
git diff --cached
差分をcommit
git commit -m "コメント"
コミットが正しく出来ているかログで確認
git log
or
git log --oneline (推奨) <-- コミットを1行に縮小して表示 -->
####commit後に作業内容の間違いが見つかった場合
commit内容を訂正(push済みの場合は厳禁!)
push済みの場合はgit revertを使用
ログでコミットを確認し、どこまで修正するかを確認する
必要に応じ、戻したい地点のコミットID(or タグ名等)を控える
####git reset
git reset オプション名 HEAD^ <-- 直前のコミットまで戻す -->
or
git log <-- --onelineオプションではコミットIDが一部省略されてしまうためここでは使用しない -->
git reset オプション名 戻したい地点のコミットID(タグ名)
オプション
--soft : commitのみ削除
--mixed : commitとaddした内容を削除
--hard : commit,addに加え作業内容も削除する(指定したコミットの状態に戻す)
最後にリモートリポジトリへpush
git push リモートリポジトリ名 HEAD <-- 最新のコミットをpush -->
or
git push リモートリポジトリ名 pushするローカルブランチ名 <-- リポジトリ、ブランチ名を明示してpush -->
その後Githubブラウザ上でPullRequestを作成し、確認者のOKが出たら変更内容をローカルのメインブランチへ取り込む(デフォルトの場合mainブランチ)
git checkout メインブランチ名
git merge 取り込みたい作業ブランチ名
補足: 任意のブランチに『 git push 』出来る設定をかける方法
リモートリポジトリに追跡ブランチがあるか確認
git branch -vv
--------------
feature/first-task [追跡ブランチ名] ec41dd3 変更完了 <-- ない場合[...]の部分は表示されない -->
--------------
git push --set-upstream リモートリポジトリ名 作業ブランチ名 <-- ローカルブランチ名をもとに、リモートリポジトリに同名のブランチを作成しデフォルトの上流ブランチとして設定する -->
以後『 git push 』でpush出来る
git revert
git revert 戻したい地点のコミットID(タグ名)
コミットIDの地点まで戻しコミットし直す処理が走る。
新しく作るコミットのコミットメッセージを入力したら、必要な修正作業を行う
完了後、リモートリポジトリへpushする
##リモートの最新情報を取り込む
追跡ブランチへ、リモートリポジトリの内容を取り込む
git fetch リモートリポジトリ名 取得する上流ブランチ名
or
git fetch -p リモートリポジトリ名 取得する上流ブランチ名 (推奨) <-- ローカルリポジトリ と fetchしたリモートリポジトリの情報を比較し、ローカルリポジトリにしかないブランチを削除 -->
git merge リモートリポジトリ名 取り込む追跡ブランチ名
その後作業ブランチを切って作業開始
以上、基本的な開発フローをまとめた記事でした。
実務に入ったら実務ベースで再度書き直していきたいと思います。