git merge into master从branch中删除更改

时间:2013-12-17 03:45:49

标签: git merge git-merge git-rebase

我会尽可能地保持清醒,虽然我不确定我是如何陷入这种情况的,并且所有重新创建它的尝试都失败了。

我已经在一个分支机构iss454工作了好几个月了。在那段时间里,我做了几次尝试,通过将master合并到iss454来保持最新状态(这一切都很顺利)。我终于完成了我的更改,并准备将他们全部推向主人。但是,当我这样做时,我丢失了我需要的iss454中的代码,而且我无法弄清楚为什么合并会擦除这些行。

我尝试过两种方式合并,掌握到iss454以及将iss454转换为master(好吧,一个主人的克隆)。我已经尝试了将iss454的最后一次提交转换为master。我已经尝试过双向调整。我也试过做一个git merge -s我们的主人,这似乎工作,但后来我错过了很多其他的变化。无论我到目前为止尝试过什么,并非我对iss454的所有更改都将完成。

我以前从来没有遇到过这样的麻烦,所以我确定我在把我扔掉的路上做了一些事情,但正如我所说,我无法弄清楚是什么。

有关如何完全合并我的代码的任何想法?我真的不想手动修复它。

2 个答案:

答案 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