我是否可以撤消提交文件,同时保持未更改的更改?

时间:2014-07-16 22:16:31

标签: git

我提交了一个文件的更改(我们称之为foo)。 (这些变化很好;我只是并不意味着它们是这个拉取请求的一部分。)提交已被推送,除了这个文件之外,我对提交中的所有其他更改感到满意。为了解决这个问题,我已经完成了另一次提交(没有foo)并从那时开始推送。

我的本​​地仓库没有暂存或未分期更改。有没有办法同时:

  • 将旧版foo(从HEAD^^)推送到全局存储库。
  • 将新版本的foo取消暂存在我的本地仓库中。

1 个答案:

答案 0 :(得分:3)

首先,使用git stash隐藏所有本地更改。

然后,将foo转换为您想要的形式,然后进行提交和推送。

最后,使用git stash apply恢复您的工作状态。


<强>更新即可。 OP似乎想要创建一个新的提交,它将恢复旧版本的foo,并将一个稍微新版本的foo拉入工作树(未分级)。

可以使用以下命令序列完成此操作。假设sha1是包含旧版本的提交的哈希值,sha2是包含较新版本的提交的哈希值。

  1. 拉出需要恢复的旧版本。

    git checkout sha1 -- foo
    
  2. 提交并推送。

    git commit 
    git push
    
  3. 将较新版本拉入工作树。

    git checkout sha2 -- foo