在保留提交的同时将 master 恢复为旧提交
Posted
技术标签:
【中文标题】在保留提交的同时将 master 恢复为旧提交【英文标题】:Revert master to old commit while preserving commits 【发布时间】:2015-01-03 00:30:34 【问题描述】:这就是我的提交历史的样子(所有内容都已推送到存储我的 repo 的 Github,但我是唯一的贡献者):
master
|
..-c100-c101-c102-c103-...-c150
我需要将master
恢复为c100
提交,同时保留 剩余的提交(即:c101-c102...-c150
),我不想松开它们。
所以这就是我想出的:
git checkout -b new-branch # Set up branch containing all commits
git checkout master # Go back to master
git revert <c-100> # Revert master branch to c-100 commit
这将(希望)导致:
master
|
..-c100-c101-c102-c103-...-c150
|
new-branch
理想情况下,我会向 master 提交一些提交,然后保持不变,直到我可以将新分支合并到其中。
这是正确的做法吗?
添加
刚刚试了一下,使用git revert <SHA>
不起作用,它只会恢复那个提交。
【问题讨论】:
git revert != snv revert。听起来您需要执行git reset --hard c100
然后强制推送。 SO上有很多关于这个的其他线程
我刚刚尝试了我的问题中的命令,但它不起作用,它只是恢复了 that 提交,它没有将master
恢复到原来的状态在那次提交上。所以我猜你是对的。
【参考方案1】:
这是完全正常的。您也可以在要提交的提交的尖端设置一个标签。
【讨论】:
【参考方案2】:答案是(如here 所述)使用:
git revert --no-commit c-100..HEAD
git commit
【讨论】:
以上是关于在保留提交的同时将 master 恢复为旧提交的主要内容,如果未能解决你的问题,请参考以下文章
我如何恢复 `git fetch 上游; git 合并上游/master`? [复制]