【要約】git pull したら "divergent branches" エラーが出た話 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者がチーム開発中にgit pullを実行した際、Gitが統合方法を判断できずエラーに直面した。
- ・エラー内容:
fatal: Need to specify how to reconcile divergent branches. - ・原因: ローカルとリモートの両方に、互いに知らないコミットが存在する「分岐状態」である。
- ・背景: Gitの仕様変更により、統合戦略の明示が必須となった。
// Approach
開発者はGitが提示する3つの統合戦略から、プロジェクトの運用に即した手法を選択して対処した。
- ・マージ (
--no-rebase): リモートの変更をマージコミットとして取り込む。 - ・リベース (
--rebase): 自身のコミットをリモートの最新コミットの後に付け替える。 - ・Fast-forwardのみ (
--ff-only): ローカルに独自コミットがない場合のみ成功する。 - ・恒久対策:
git config --global pull.rebase falseでマージをデフォルト化する。
// Result
開発者は適切なオプションを指定することで、エラーを解消し作業を継続できた。
- ・実行コマンド:
git pull origin dev --no-rebaseを使用。 - ・運用の改善: グローバル設定により、次回以降の判断コストを削減した。
- ・リスク管理: 履歴の書き換えを避けるため、マージを選択して安全性を確保した。
Senior Engineer Insight
> チーム開発において、Gitの挙動を個人の裁量に任せるのは危険である。履歴の整合性と追跡可能性を重視するなら、マージをデフォルトとする運用が合理的だ。リベースは履歴が美しくなるが、共有ブランチでの使用は厳禁である。プロジェクト開始時に、
pull.rebase の設定をチーム内で統一することを強く推奨する。