如何重置为提交并使其成为大师?

Posted

技术标签:

【中文标题】如何重置为提交并使其成为大师?【英文标题】:How can I reset to a commit and make it master? 【发布时间】:2015-07-14 23:55:02 【问题描述】:

我想将 m 存储库重置为旧提交并从那里开始跟踪更改。这就像 50 次之前的提交,所以 git revert 不是一个选项。我该怎么办?

附:更新 - 我还需要推送该提交并成为存储库中的最后一个提交。

【问题讨论】:

Revert to a previous Git commit 的可能重复项 Joe 如果我使用上面的方法 - 我将不得不手动编写所有 50 个提交 SHA... 我不相信您理解重复问题中的答案。 【参考方案1】:

蒂姆的回答是正确的。我正在添加我在http://git-scm.com/docs/git-reset 上找到的更多信息

$ git commit ...              (1)
$ git reset --soft HEAD~1     (2)
<< edit files as necessary >> (3)
$ git add ....                (4)
$ git commit -c ORIG_HEAD     (5)

(1) 这是您要撤消的内容

(2) 这通常是在您记住刚刚完成的内容时进行的 提交的内容不完整,或者您拼错了提交信息1,或者 两个都。使工作树保持“提交”之前的状态。

(3) 更正工作树文件。

(4) 提交阶段更改。

(5) 提交更改,重用旧的提交消息。重置复制 老头给.git/ORIG_HEAD;使用-c ORIG_HEAD 提交将打开一个 编辑器,最初包含来自旧提交的日志消息 并允许您对其进行编辑。如果您不需要编辑消息,您可以 可以改用-C 选项。

【讨论】:

【参考方案2】:
$ git reset --hard <commit-hash-of-commit-to-reset-to>

请注意,这将删除此后的所有更改,如果您想保留更改并仅删除提交,请使用 --soft 而不是 hard

【讨论】:

git reset --soft won't update the index 所以所有更改将在重置完成后暂存。如果您希望在工作副本(而不是索引)中保留更改,请使用git reset --mixed 或简单地使用git reset

以上是关于如何重置为提交并使其成为大师?的主要内容,如果未能解决你的问题,请参考以下文章

如何合并两个模型集合并使其成为一个分页然后将其发送到 Laravel 中的视图

如何从导航控制器切换到选项卡控制器并使其成为根视图控制器

删除等宽约束并使其成为全宽

sh 创建用户并使其成为管理员

PostgreSQl:选择多行并使其成为一行

在 Swift 中删除 Unwrapped 并使其成为可选? [复制]