【问题标题】:Move prototype code out of master branch with git使用 git 将原型代码移出 master 分支
【发布时间】:2011-09-09 02:39:36
【问题描述】:

新项目的 git repo 的 master 分支只包含原型/尖峰代码。现在我已经了解了基本概念,我将要从头开始重新编码。

我希望主分支清除所有原型代码。理想情况下,原型代码需要移动到一个分支中,这样我以后仍然可以使用它。

是否可以将 master 重置回第一次提交之前? 执行此操作的 git 命令是什么?

【问题讨论】:

  • 命令是rm -rf .git; git init
  • @larsmans,这显然不是 OP 要求的。

标签: git


【解决方案1】:

这是您创建一个不与其他分支共享任何历史记录的新分支的方式:How to create a new empty branch for a new project

在按照这些说明操作之前,只需使用 git branch -m master prototype 将现有的 master 重命名为 prototype。然后,当按照链接的说明进行操作时,请使用 master 而不是 newbranch

【讨论】:

  • master 已经被推送到 GitHub。当我稍后尝试推送新主人时,这会是一个问题吗?
  • 是与否:新的master 不会快进当前的master(然后是prototype)。因此,您需要使用git push <github remote here> +master 强制推送。如果人们仍在该分支上工作,他们将受到这种强制更新的干扰。然后,您还应该将旧的 master 作为 prototype 推送到 github,以便人们可以过渡到新的 prototype 分支。
【解决方案2】:
  1. 从当前的master 分支,使用您的原型代码创建一个新分支。 git checkout -b prototype
  2. 使用git checkout master返回主分支。
  3. 使用git rm -rf *master 分支中删除所有文件。
  4. 使用git commit -m "Removed prototype code"master 分支上提交您的更改。

这样,历史记录将被保留,您可以随时在日志中跟踪切换发生的时间。

【讨论】:

  • Git 不允许我恢复到第一次提交。
  • @Andrew Davey,如果您想获得一个项目中根本没有文件的版本,那么只需 git rm -rf * 而不是 git revert
  • 抱歉,git revert 不会删除任何历史记录,而是 添加 另一个仅具有指定提交的反向更改的提交。我怀疑,你真的想说git reset --hard <hash>,这会将master 移动到 命名提交之后的状态。然而,这并不是回到初始提交之前的直接途径。此外,reset 也将导致新的master 不快进 w.r.t。旧的masterpush 对我的回答的相关评论也在这里。
  • @Tilman Vogel,确实,revert 不会删除历史记录。我说这是一种保留历史的方法。
  • @Radu,仍然git revert <commit> 确实 将树状态置于<commit>^ 的状态。相反,它会将树置于 HEAD 状态,并在顶部应用 <commit>^<commit> 之间引入的更改的反向补丁。它只会撤消在单个提交中引入的更改!
【解决方案3】:

如果您真的要从头开始,只需创建一个全新的存储库。有两个没有共同祖先的分支是可能的,但它并没有那么有用。

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 2021-02-03
    • 2013-02-28
    • 1970-01-01
    • 2014-02-19
    • 2015-11-29
    • 2011-02-15
    • 2016-04-30
    相关资源
    最近更新 更多