| name | git-workflow |
| description | Git操作のワークフロー。コミット、ブランチ操作、マージ、reset時に参照。 |
Git Workflow
コミット
- メッセージは変更内容を客観的に記述する
- 一時ファイル(ログ等)はコミットしない
コミット前チェック
- ビルドがエラー・警告なしで通ることを確認
- 一時ファイルを削除
ブランチ操作
ブランチを切るタイミング
- 規模の大きい作業
- 実験的な変更
- 失敗したら戻したい変更
IDE終了が必要な操作
ワーキングディレクトリのファイルが変更される可能性のあるgit操作(checkout、reset等)の前には、IDEを終了する。
killall Xcode
マージ
- 1ブランチずつマージし、各マージ後にビルド確認
- 全部マージしてからビルドすると原因特定が困難
並行作業
- 共有インターフェース(型、命名、API)に触れる場合は、分岐前に合意してベースブランチにコミット
- 密結合な変更は並行作業に向かない
履歴操作(reset, revert等)
reset前の必須確認
git log --oneline -5
git status
確認事項:
- 取り消すコミットは自分が作ったものか
- リモートにpush済みでないか
- 他のコミットを巻き込まないか
安全な取り消し方法
| 状況 | 推奨コマンド |
|---|---|
| コミットを取り消したい(履歴残す) | git revert HEAD |
| 直前のコミットを修正したい | git commit --amend |
| ステージングを取り消したい | git restore --staged . |
| 作業中の変更を退避 | git stash |
危険なコマンド
以下は実行前に必ず git log で状態確認:
git reset --hard- 変更が完全に消えるgit reset HEAD~N- N個前まで戻るgit push --force- リモートの履歴を上書き
reset時の注意
- reset前に
git log --oneline -3で親コミットを確認 - リモートとローカルの差分を確認:
git log origin/main..HEAD - 不安なら
git stash+git pull+git stash popで安全に
push失敗時
# リモートに先行コミットがある場合
git pull --rebase
git push
# unstaged changesがある場合
git stash
git pull --rebase
git stash pop
git push