【问题标题】:Reset without losing already committed files重置而不丢失已提交的文件
【发布时间】:2012-07-13 23:52:06
【问题描述】:

当我不小心将文件提交到错误的分支时,我通常使用git reset --hard HEAD~1。但是,使用这种方法我通常会丢失所有提交的文件。有没有办法在不丢失编辑文件的情况下重置提交?

【问题讨论】:

    标签: git git-reset


    【解决方案1】:

    就我而言,在找到this simple explanation 之后,我更喜欢使用--mixed

    git reset --mixed HEAD^
    

    【讨论】:

      【解决方案2】:

      不要使用--hard,而是使用--soft

      因此,如果您想删除最新的提交,您会这样做:

      git reset --soft HEAD^

      【讨论】:

      【解决方案3】:

      虽然 Alex 非常正确,但我可能会想尝试不同的顺序:

      如果我想在尚未诞生的分支上提交:

      git branch newbranch
      git reset --hard HEAD^
      

      如果我想在现有分支上提交:

      git checkout otherbranch
      git cherry-pick firstbranch
      git checkout firstbranch
      git reset --hard HEAD^
      

      亚历克斯回答的完整示例

      git reset --soft HEAD^
      git checkout otherbranch
      git commit -am "Message"
      

      请注意,如果尝试将更改“浮动”到另一个分支的尝试由于冲突而失败,则最后一个示例将失败。然后,您将需要存储/结帐/申请以解决冲突。

      【讨论】:

      • 很好的答案!我认为这只是丢弃在上次提交中所做的一些更改并保留另一半。在这种情况下,您只需丢弃提交并再次添加您打算保留的更改。在这种情况下,git add --interactive 也可能有用!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 2022-06-11
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多