我有一个存储库,其中的提交已消失:
... C1 ... C2 ... C3 ... Cn
在 master 分支上,假设我只在 Cn
提交点发现代码有一些重大问题需要时间来调试,我希望尽快有一个稳定/好的Master。假设我知道 C3 是最后一个已知的好点。有没有办法让我重新定义主头为C3
,并将Cn
标记为新的分支头,比如“调试”分支? (存储库是远程的,但假设它不是公开共享的)。
最佳答案
摘要
在 Git 中,master 只是指向给定提交的另一个分支标签。从技术上讲,您甚至根本不需要存储库中存在名为 master 的分支。
您的两个最佳选择是 git-checkout
和 git-reset
,具体取决于您是要移动还是丢弃历史记录。前者是您所要求的,而后者是为了完整性而包含在内。
使用 checkout
您可以通过将主分支重置为任意提交来执行您想要的操作。例如:
# Move current master branch aside.
git branch -m master debug
# Create a new branch at committish. Use a branch name or a commit ID.
git checkout -b master c3
使用重置
或者,如果您不关心现有历史记录,最快的解决方案是将 master 的 HEAD 重置为提交。例如,假设您已经位于 master 分支上:
git reset --hard c3
虽然这不会让您当前的历史记录在主分支中可用,但在修剪之前仍然可以通过引用日志访问完整的历史记录。
关于git - 重新定义大师头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397807/