首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用git恢复提交的一部分

使用git恢复提交的一部分
EN

Stack Overflow用户
提问于 2011-01-25 23:49:49
回答 5查看 42.4K关注 0票数 161

我想在git中恢复一个特定的提交。不幸的是,我们的组织仍然使用CVS作为标准,所以当我提交回CVS时,多个git提交被合并为一个。在这种情况下,我很乐意挑选出原始的git提交,但这是不可能的。

有没有一种类似于git add --patch的方法,允许我有选择地编辑差异,以决定要还原提交的哪些部分?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-26 00:30:39

使用--no-commit (-n)选项执行git revert,然后取消转储更改,然后使用git add --patch

代码语言:javascript
复制
$ git revert -n $bad_commit    # Revert the commit, but don't commit the changes
$ git reset HEAD .             # Unstage the changes
$ git add --patch .            # Add whatever changes you want
$ git commit                   # Commit those changes

注意:使用git add --patch添加的文件是您想要还原的文件,而不是您想要保留的文件。

票数 256
EN

Stack Overflow用户

发布于 2012-12-19 21:32:57

我已经成功地使用了以下内容。

首先,还原完整的提交(将其放入索引中),但不要提交。

代码语言:javascript
复制
git revert -n <sha1>  # -n is short for --no-commit

然后以交互方式从索引中删除恢复的良好更改

代码语言:javascript
复制
git reset -p          # -p is short for --patch  

然后提交错误更改的反向比较

代码语言:javascript
复制
git commit -m "Partially revert <sha1>..."

最后,恢复的良好更改(已被重置命令取消暂存)仍在工作树中。他们需要清理一下。如果工作树中没有其他未提交的更改,则可以通过

代码语言:javascript
复制
git reset --hard
票数 43
EN

Stack Overflow用户

发布于 2014-08-11 20:57:20

解决方案:

代码语言:javascript
复制
git revert --no-commit <commit hash>
git reset -p        # every time choose 'y' if you want keep the change, otherwise choose 'n'
git commit -m "Revert ..."
git checkout -- .   # Don't forget to use it.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4795600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档