はじめに
完璧主義者脱却のための日記&学習記録です!(日数を数えるのはやめます)
にっき
今日もエンジニアアルバイトをしていて,特にGitHubの操作に躓いてしまいました.初めてのチーム開発でマージしたりコンフリクトを解消したりするのめっちゃ緊張しませんか?「これで全部台無しにしちゃったらどうしよう」とずっと考えてマージするだけに時間かけてしまいました.
なので今日の学習記録ではその躓いた部分を重点的にまとめたいと思います.
まなんだこと
1. マージ時のコンフリクトを解消する方法
-
ターミナルで解決する場合
コンフリクトが発生した場合,ファイルを手動で編集して修正し,以下を実行:
git merge <branch>
git add . git commit -m "コンフリクトを解消"
-
GitHub上で解決する場合
- PRの「Resolve conflicts」ボタンをクリックし,編集後「Mark as resolved」してマージ
2. リモートの状態をローカルに完全に反映させる
-
現在のローカルの変更をすべて破棄
git fetch origin git reset --hard origin/main # mainブランチの最新状態にリセット git clean -fd # 追跡されていないファイルも削除
-
git fetch origin
とは?- リモートの最新の状態を取得するが,ワークツリーには適用しない
-
git merge origin/main
でローカルブランチに反映可能
3. 不要なファイルを削除した状態で main にマージ
-
ローカルで削除を確定し,main にマージ
git rm <file> git commit -m "不要なファイルを削除" git push origin feature
- その後,PRを作成して main にマージ
4. GitHub のリポジトリルールにより git push
が拒否される
-
git push origin main
でエラー:error: GH013: Repository rule violations found
-
原因
-
main
への直接プッシュが禁止されている -
merge commit
が禁止されている
-
-
解決策
- PR を作成して
main
にマージする -
rebase
を利用して履歴を整理する
- PR を作成して
5. ローカルで git merge origin main
を取り消す
-
まだコミットしていない場合
git merge --abort
-
すでにコミットした場合
git reset --hard HEAD~1 # 直前のマージコミットを削除
おわりに
今日は時間がなくて大部分をChatGPTに任せてしまいました.(反省)
明日も頑張ります.