gitは便利だが敷居が高い
gitは慣れると手放せない物ですが、慣れるまでは「迷惑かけたらどうしよう」という心理的コストがめちゃくちゃ大きかった記憶があります。
そこで初心者だった当初、チームに迷惑をかけないことを軸に自分用マニュアルを作成していました。
迷惑さえ掛けなければ何しても良いというか、迷惑を掛けても元に戻せれば問題ないと思えたらgitを覚えるスピードが上がったので、誰かの役に立てればと思い共有します。
基本的なgitへのコミットの流れ
・ローカルとgit labの狭間にファイルを置く(誰にも気づかれずに戻せる)
git add [ファイル名]
・ローカルとgitlabの狭間に記録を残す(gitlabに記録は残るけど、誰にも迷惑かけずに戻せる)
git commit [ファイル名]
・gitlab(リモートブランチ)に反映させる(ぐちゃぐちゃにすると誰かに迷惑がかかる)
git push origin/ブランチ名
間違えたブランチで作業していたことに気づいた時
・一旦ローカルの差分を闇にしまう
git stash
・作業したいブランチに切り替える
git checkout [作業したかったブランチ]
・さっきしまった差分を、作業ブランチに反映させる
git stash pop
複数人で作業時、コミット前にやること
誰かが常にgitlabの状態を更新しているため、何も考えずにコミットするとコンフリクトを起こす。
コミットする前に、最新のリモートブランチの状態にする。
・自分が今どのブランチにいるかを確認する
git branch
・ローカルの差分を一旦しまう
git stash
・gitlabの、ブランチ情報をローカルに取得
git fetch
・gitlabの、プロジェクトの中身をローカルに取得
git rebase origin [取得したいプロジェクトのブランチ名(大体Developmentとかmasterとか)]
もしもコンフリクトしてしまったら
・コンフリクトは、リモートブランチ(git lab)の状態と、自分のローカルの状態に差分があるまま統合しようとした時に起きる(歴史の改ざんになるので)
コミット時の状態にはすぐ戻せるので、こまめにコミットしておくこと
####1. 手で直す
・どこがコンフリしてるのか確認する
git diff
・少しだけだったら、手で消す
2. 前にコミットした状態に戻しちゃう
・コンフリクト起こしているファイルを確認
git status
・最後にcommitしたのがいつだったか確認する
git log
・一番最後にcommitした状態に戻す
git reset HEAD [コンフリ解消したいファイル名]
・前の状態に戻ったか確認(cleanになってたらok)
git status
ローカルブランチにコミットしたあとに git rebase origin *****
して、コンフリしたら
・コミット実行前に巻き戻す
git rebase origin ****
git rebase --abort
・コンフリクトしたコミットを調整したコミットで上書きして次に進む
git rebase --skip
終わりに
どれも慣れると当たり前のことですが、gitは自由度が大きい分、「結局なんなの」に陥りがちですよね。
まだまだ勉強中の身なので、間違いがあったらコメントかtwitter にてお気軽にご指摘頂けると非常に喜びますー