【问题标题】:git revert <from>..<to> - what is REALLY reverted?git revert <from>..<to> - 什么是真正还原的?
【发布时间】:2016-07-07 18:41:32
【问题描述】:

git-revert 文档说:

git revert -n master~5..master~2  

将提交所做的更改从 fifth 在 master 中的最后一次提交(包括)恢复到 第三次 在 master 中的最后一次提交(包括)

但我的观察显示出一些不同的情况。
通话后:

git revert HEAD~1..HEAD

最后一个提交被删除而不是前一个。

所以我想说:

git revert -n master~5..master~2

将提交完成的更改从 master(包括)中的 第四次 最后一次提交还原到 master(包括)中的 second 最后一次提交。

其他示例:git revert HEAD 恢复上次提交 - 这没关系

但是 git revert HEAD.. 说给定的列表是空的 - 我希望它也会恢复上次提交,因为文档说包含左边界。

我说的对吗?

【问题讨论】:

    标签: git git-revert


    【解决方案1】:

    让我们对您的问题进行排序。

    在我们开始之前,让我们先了解一些术语

    Terminology

    What is HEAD in depth

    HEAD    = Current commit 
    ../ ... = Commit range (from ... to)
    revert  = Undo the given change
    

    git revert -n master~5..master~2

    将提交完成的更改从 master 中的第五个最后提交(包含)还原到 master 中的第三个最后提交(包含)

    您正在使用范围。范围是从...到,在您的情况下是从 5 到 2(不包括)。


    git revert HEAD~1..HEAD
    最后一个提交被删除,而不是前一个。

    您是在告诉 git:请还原 previous commit up to the last one 范围内的内容,以便它撤消从上一次提交 [不包括] HEAD~1 到当前提交 @ 的更改987654328@


    其他示例:git revert HEAD 恢复上次提交 - 这没关系

    在这种情况下,您提供的是 single SHA-1 (HEAD),因此它会还原给定的提交。它与还原历史中的任何其他提交相同。

    # revert commit XYZ
    git revert XYX
    
    # revert the current commit (git will extract the HEAD SHA-1)
    # (Again read the linked post above to fully understand what is HEAD)
    git revert HEAD 
    

    但是 git revert HEAD.. 说给定的列表是空的

    如上所述,.. 代表范围。您提供了列表的唯一一侧(缺少从/到取决于您如何看待它)

    如果我们回到这个:git revert -n master~5..master~2幕后发生的事情是这样的:

     for (index=first SHA-1 to index= last SHA-1)
         git revert SHA-1
    
    
      git revert -n master~5..master~2 ->
    
         git revert -master~5
         git revert -master~4
         git revert -master~3
    

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 2013-02-24
      • 2015-01-17
      • 2019-09-05
      • 2012-01-11
      • 2012-10-16
      • 1970-01-01
      • 2016-04-13
      • 2021-10-02
      相关资源
      最近更新 更多