Githubに関するアウトプット
背景
どれだけ勉強してもイマイチ理解できなかった「git/github」に向き合い、腰を据えて徹底的に咀嚼してみました。そして吐き出す。
用語の整理
リモートリポジトリ(origin)
上流ブランチ:origin 〇〇
ローカルリポジトリ
リモート追跡ブランチ(リモートブランチ):origin/〇〇
ローカルブランチ:〇〇
pull:merge + fetch
fetch:「上流ブランチ」を「リモート追跡ブランチ」に
merge:「リモート追跡ブランチ」を「ローカルブランチ」に
add:「ワークツリー」から「インデックス」に(ステージング)
commit:「インデックス」から「(ローカル)リポジトリ」に
push:「ローカルブランチ」を「上流ブランチ」に(※pullのように分けられない)
リポジトリ:変更内容を保存する場所
init:使用したディレクトリをgitの管理に置くコマンド(ローカルリポジトリを作成・初期化する)
プル(マージ)リクエスト:本番用ブランチへの統合と内容確認のお願い
変更した内容の戻し方
add:git reset HEAD [ファイル名/ファイルパス] または、 git rm(初回commit前)
commit:git reset --soft HEAD^
fetch:git reset --hard HEAD(ローカルブランチまでは変更されていないため)
pull:git merge --abort、git reset --hard HEAD(マージを取り消してから、先述のfetchを取り決す)
HEAD:今自分が作業している場所を示すポインタ、「^:チルダ」や「~:キャレット」を使って相対的に位置を示すことも可能(HEAD^)
「origin main」と「origin / main」の違い
origin main:originにあるmainブランチ
origin/main:originにあるmainを追跡しているブランチ
「プルリクエスト」と「プル」の違い
プルリクエストは上流ブランチ(リモートレポジトリ)上での作業
プルは上流ブランチ(リモートレポジトリ)からローカルブランチ(ローカルレポジトリ)に反映させる作業
プルリクエストとはレビュワーに「プル(マージ)させる」こと
各々が好きなタイミングで勝手に本番用ブランチに反映すると問題が多発する
開発ブランチを本番用ブランチに反映させる(プル/マージする)前に、必ず第三者(レビュワー)に確認させる仕組みのこと
「main」と「master」の違い
どちらも本番用ブランチを指す
「main」の方が新しい
「master」は「slave」を連想させる表現とのことで、文化的な背景により「main」を使用するようになった
「checkout」と「switch」の違い
どちらもブランチの切り替えに使用される
「switch」はブランチを作成し、他のブランチに移動するために使用
「checkout」は「switch」の機能に加えて、ファイルの変更を元に戻したり、ファイルを復元することも可能
「checkout」は機能が多すぎるため、ブランチの切り替えには「switch」を使おうという推奨
所感
ローカルリポジトリにあるリモート追跡ブランチを、リモートブランチとも呼ぶから割とややこしい
ブランチを縦と横に分けてイメージすると、理解しやすかった
縦:上流ブランチ、リモート追跡ブランチ、ローカルブランチ
横:分岐した各ブランチ(main、dev、fix-〇〇、feature-〇〇等)
この記事が気に入ったらサポートをしてみませんか?