首页 > 解决方案 > Git 分支很糟糕,开发人员不知何故不再是主人的孩子——从哪里开始?

问题描述

我的 repo 很简单:master,有一个 dev 分支,还有一个 dev 的 exp 分支。有时,当我进行看似普通的合并时,git 仍然需要额外的提交,以及令牌消息“merge exp to dev”——我以为我理解了这样做的原因,但显然我不明白。

Git 开始要求对我所有的合并进行额外的提交,我认为我可以通过合并来纠正它,即从 dev 到 exp,从 master 到 dev。我猜不是。现在我有如下日志。当我在我的 exp 分支上时,我在日志中看不到 dev 或 master:

$ git log --graph --oneline

* 2302e04 (HEAD -> exp) Lock all cell key inits, not just hot
* 05b7207 Allow for asyncAfter not doing barriers properly
*   96a7da8 Merge dispatch queue improvments with bug fixes
|\  
| * 61f0f3e Keep strong ref to dispatch until done with it
| * 6ce8bfe Release stepper before retiring sprites
* | d2acb67 Dedicated dispatch queues for census and clock
|/  
* c466b38 (origin/exp) Remove excess async call wrappers
* c3e0562 Fix calorie intake issues
* f6528b8 More debug to catch dead Arkon carcasses
* 4f78c89 Some debug and some metabolism tweaking
* 79ea6fc Use lock properly when planting manna

当我切换到 dev 或 master 时,日志看起来有些严重错误:

$ git log --graph --oneline

*   ebf5244 - (HEAD -> master, origin/dev, dev) More merge hell (23 hours ago) 
|\  
| * 6ce8bfe - Release stepper before retiring sprites (24 hours ago) 
| * c466b38 - (origin/exp) Remove excess async call wrappers (4 days ago) 
| * c3e0562 - Fix calorie intake issues (4 days ago) 
* |   ab18fcd - (origin/master, origin/HEAD) Still in merge hell (4 days ago) 
|\ \  
| |/  
| * f6528b8 - More debug to catch dead Arkon carcasses (4 days ago) 
| * 4f78c89 - Some debug and some metabolism tweaking (5 days ago) 
| * 79ea6fc - Use lock properly when planting manna (6 days ago) 
| * ed2fd20 - Fix bloom failure (6 days ago) 
| * 8273def - All manna operations always run in actions (6 days ago) 
* |   6ecefa9 - Merge branch 'exp' into dev, god knows why (8 days ago) 
|\ \  
| |/  
| * de9dc5b - Fix keys transfer bug, freaking finally (8 days ago) 
| * dd7c265 - Simplify cell lock mechanism (2 weeks ago) 
* |   c007107 - Trying to escape merge hell (8 days ago) 
|\ \  
| * \   80114d2 - Merge branch 'dev' (2 weeks ago) 
| |\ \  
| * \ \   218e5c9 - Merge branch 'dev' (2 weeks ago) 
| |\ \ \  
| * \ \ \   5f13180 - Merge branch 'dev' (3 weeks ago) 
| |\ \ \ \  
| * \ \ \ \   e4150f5 - Merge branch 'dev' (4 weeks ago) 
| |\ \ \ \ \  
| * \ \ \ \ \   e7cd064 - Merge branch 'dev' (4 weeks ago) 
| |\ \ \ \ \ \  
| * \ \ \ \ \ \   95bc8f8 - Merge branch 'dev' (6 weeks ago) 
| |\ \ \ \ \ \ \  
| * \ \ \ \ \ \ \   da3500d - Merge branch 'dev' (7 weeks ago) 
| |\ \ \ \ \ \ \ \  
| * \ \ \ \ \ \ \ \   4b45133 - Merge branch 'dev' (8 weeks ago) 
| |\ \ \ \ \ \ \ \ \  
| * \ \ \ \ \ \ \ \ \   a3498b7 - Grr, more weird branch merge stuff (10 weeks ago) 
| |\ \ \ \ \ \ \ \ \ \  
| * \ \ \ \ \ \ \ \ \ \   e9b0429 - Merge branch 'dev' (3 months ago) 
| |\ \ \ \ \ \ \ \ \ \ \  
:

而且我仍然无法从 dev 合并到 master,或从 exp 到 dev,而无需再次提交。我不知道是什么原因造成的。似乎分支之间的层次关系已经丢失。

我什至不知道从哪里开始解决这个问题,我不知道从哪里看。谷歌搜索“损坏的分支历史”会发现很多关于修复单个分支历史的信息,而不是关于分支之间的关系。

解决问题的最有效方法是什么?我可以搜索哪些关键字来获取相关信息?这个问题有具体的名称吗?

标签: gitmergegit-branchbranching-and-merging

解决方案


推荐阅读