我会尽可能地保持清醒,虽然我不确定我是如何陷入这种情况的,并且所有重新创建它的尝试都失败了。
我已经在一个分支机构iss454工作了好几个月了。在那段时间里,我做了几次尝试,通过将master合并到iss454来保持最新状态(这一切都很顺利)。我终于完成了我的更改,并准备将他们全部推向主人。但是,当我这样做时,我丢失了我需要的iss454中的代码,而且我无法弄清楚为什么合并会擦除这些行。
我尝试过两种方式合并,掌握到iss454以及将iss454转换为master(好吧,一个主人的克隆)。我已经尝试了将iss454的最后一次提交转换为master。我已经尝试过双向调整。我也试过做一个git merge -s我们的主人,这似乎工作,但后来我错过了很多其他的变化。无论我到目前为止尝试过什么,并非我对iss454的所有更改都将完成。
我以前从来没有遇到过这样的麻烦,所以我确定我在把我扔掉的路上做了一些事情,但正如我所说,我无法弄清楚是什么。
有关如何完全合并我的代码的任何想法?我真的不想手动修复它。
答案 0 :(得分:0)
从您的描述中听起来像master中的一个提交有更改正在撤消您在iss454中的更改。
您最好的选择是尝试通过
查看有关文件历史记录的提交内容。git log --oneline --no-merges -- <path to your file>
或gitk <path to your file>
查看这些提交,直到您开始了解更改是如何发生的。
答案 1 :(得分:0)
不要马上合并,为什么不先做一些清理呢?
$ git checkout iss454 //or maybe a new branch just to be safe
然后将提交压缩成一个有意义的提交:
$ git rebase HEAD~5
^您应该选择与master有共同祖先的提交。
将所有pick
更改为squash
,但第一行除外。
然后,更新iss454的分支,并在master上进行:
$ git rebase master
最后将iss454合并为master:
$ git checkout master
$ git merge iss454