合并2个不同的提交

时间:2014-09-19 02:21:09

标签: git version-control push commit

我已经对我的提交做了一些更改并完成了我的工作副本,之后我也做了git push

但是,我突然发现我的修改过的文件已经被推到了bitbucket repo上。因此,在没有撤消的情况下,我第一次手动将我的文件更改为默认值。这是工作流程。

C1
README.md:
This is the content of the first readme on README.md

  1. git add README.md
  2. git commit -m 'initialize README.md'
  3. git push -u origin master
  4. DONE!
  5. C2
    之后,我将文件更新为:
    The content is new on README.md

    1. 如上所述
    2. DONE!
    3. C3 我突然做了一些这样的改变:
      This is the content of the first readme on README.md add a few new lines add a few new lines

      1. git add README.md
      2. DONE!
      3. 我无法对此状态进行提交,否则我将失去 C2 更改。在这种情况下,我想git push我的 C3 ,在我继续工作副本之前,我想合并 C2 C3 ,但只有“改变”。所以,在这种情况下,就像这些:
        The content is new on README.md add a few new lines add a few new lines

        我为什么这样做的问题,因为我在修改“第一行”之前忘了先在add a few lines上工作。

        我认为git revert不会做魔术。 非常感谢您的关注! :)

        编辑git cherry-pick也会覆盖本地更改T ___ T

1 个答案:

答案 0 :(得分:1)

你们如何改变:

第1步:$git rebase -i HEAD^^^

这将带您进入默认编辑器,其中将列出您的最后两次提交,并将其交换。

在rebase期间,你的C3提交将成为你的第二个提交C2',C2将成为C3'。

在Rebase 2/2解决冲突之后,这些将是你的提交吗?

C1 README.md: This is the content of the first readme on README.md

C2' README.md: This is the content of the first readme on README.md add a few new lines add a few new lines

C3' README.md The content is new on README.md add a few new lines add a few new lines

现在你必须强行推进你的上游。

$git push -f -u origin master

注意:它会覆盖您的更改,您必须告诉已经从您那里获取的其他人进行强制拉取或获取并合并/变基。

希望这能回答你的问题!