虽然我做了改变,Git已经是最新的

时间:2017-10-27 15:31:23

标签: python git github bitbucket git-merge

我有两个分支A,B。

在分支A中,我添加了一个名为a.py的文件,其中包含:

import os
import math

我添加并提交了文件(并推送到远程)。

我创建了另一个分支,B就是这样:

git checkout -b B
分支B中的

我添加了另一个文件并添加,提交并推送它。

我也改变了a.py:

import os
import sys

之后我还添加了7个文件并推送它们(在B中)。

现在,我很遗憾,我希望通过将A添加到B来保持:import math而不会丢失所有旧的提交。只返回(但不是手动)导入数学。

当我只使用IDE将A合并到B时,它会显示already up to date,但事实并非如此,因为在A中我有import math而在B中我有import sys

我该如何解决?

我害怕失去我所有的工作。

提前致谢。

2 个答案:

答案 0 :(得分:4)

Ipacheco是对的,但让我详细说明。

在git中,当您将两个分支合并在一起时,它不会考虑内容的不同之处。它考虑提交的不同之处。

所以你有import math的分支A.但更重要的是你承诺#1。

当您从A分支到B时,git副本将#1(带有import math更改)提交到B.然后您进行进一步更改 - 提交#2。因此B的提交历史为#1和#2。

所以当你尝试将A合并到B中时,git说B已经提交#1(你刚刚覆盖了它)。 基本上,A没有任何B没有的新作品。因此B是“最新的”。

如果你想返回,你实际上必须将提交还原为B,这些提交有你不想要的更改。

编辑:更具体地说,您可以从命令行使用git revert <commit>。这将添加一个撤消指定提交的新提交。所以你不会失去任何工作。但它确实意味着这两个提交都在你的历史中。 (如果这是一个问题,请转而使用rebase。)有关还原here的更多信息。使用git log查找提交哈希值。

答案 1 :(得分:3)

B“已经是最新的”,因为它是A的一个分支,并且在创建B分支后A未更新。