Git:撤消已发布的更改

时间:2014-04-05 18:00:51

标签: git

所以我一直对本周在项目中做的最后3次提交表示遗憾。问题是我已经将它们推送到公共存储库,我怀疑至少有几个人已经将这些更改推迟了。

现在最安全的做法是撤消最近3次提交中的更改,不要对撤回这些更改的人提出任何申诉?

3 个答案:

答案 0 :(得分:2)

最后这简单了:

git revert HEAD~3..HEAD

当我执行它时,它为我正在恢复的每个提交创建了一个新提交,撤消了它的更改。如果它能在一次提交中恢复所有内容会更好。但我觉得这很好。

答案 1 :(得分:0)

如果你想恢复到某个特定提交的状态,并且真的不想要一个显示它如何到达的恢复链,

newcommit=$(
    git cat-file -p $thatcommit \
    | sed '1,/^$/d;$a \
             reverting to '$(git rev-parse $thatcommit) \
    | git commit-tree -p HEAD $thatcommit^{tree}
)
branch=`git symbolic-ref -q --short HEAD`
git checkout ${branch:+-B $branch} $newcommit

将在您的分行提示,消息和所有内容(仅限新的日期/父母,以及最后的“还原”注释)中复制$thatcommit

答案 2 :(得分:0)

您只需要git reset --hard提交您想要的提示,git push(可能需要--force非快进提交)结果。

但这意味着更改永远丢失。也许你应该在上面之前在尖端(git branch this-was-a-big-mistake)创建一个新的分支,并推出两个分支......