将 master 重置为空状态

Posted

技术标签:

【中文标题】将 master 重置为空状态【英文标题】:Reset master to an empty state 【发布时间】:2019-10-18 23:58:43 【问题描述】:

我创建了一个新的 Rails 应用程序并将代码直接从 master 推送到 Github(第一次提交到存储库中)。但是我犯了一个错误,我不想直接从 master 提交这个新的 Rails 应用程序,而是从 master 创建一个新分支并从这个新分支推送新的 Rails 应用程序。

因此,我想:

    在 Github(remote) 中从 master 中删除提交,所以 master 是 EMPTY 从 master 创建一个新分支,并将 master 中的先前提交添加到这个新分支中。 将其推送到 Github。

【问题讨论】:

我建议从头开始,删除 git 存储库(这将帮助您从文件夹中取出 git 而不会丢失文件)***.com/questions/4754152/…)并开始一个新的。 【参考方案1】:

在 Github(remote) 中从 master 中删除提交,所以 master 是 EMPTY

您可以创建一个孤立分支 - 孤立分支是没有任何历史记录的分支

# Create "clean" branch
git checkout --orphan <name>

# remove all existing content if you wish
git clean -Xdf && git clean -xdf

从 master 创建一个新分支,并将 master 中的先前提交添加到这个新分支中。

几个选项:

# Option 1 - Start your branch from the last desired commit
git checkout -b <name> <SHA-1> 

# Option 2 - Set your branch to the desired commit 
git reset <SHA-1> --hard

# Add the required commit on top of your branch
git cherry-pick <SHA-1>

将其推送到 Github。

# force the update of the new branch
git push <origin> master -f

【讨论】:

【参考方案2】:

请使用以下命令从master创建一个新分支,

git checkout -b branch_name

结帐后进入您的新分支并将其推送到 Github。

现在转到 master 分支并 remove the last 提交并推送到 Github

【讨论】:

【参考方案3】:

您还可以对您的存储库尝试以下步骤:

    git checkout master: 确保你是master。 git checkout -b my-fancy-new-branch:创建您的新功能分支。 git checkout master:切换回master git reset --hard rootcommit:将 master 重置为您自己提交之前的状态。 可选,如果你有一个遥控器,你可以从:git pull --ff(如果因为拉动不是快进而失败,你必须重新考虑rootcommit。它包含你的一些工作)

我尝试在我的测试存储库上执行此操作,它似乎有效。

我从这个answer 中获得了参考,这也有助于找到其他方法。

【讨论】:

以上是关于将 master 重置为空状态的主要内容,如果未能解决你的问题,请参考以下文章

实现接口参数为空时不传参,刷新页面时参数重置问题

如何将开发分支重置为master

text git将master分支重置为最新

将 DEVELOP 重置为 MASTER 但保留旧的开发

Github重置分支

Git将功能分支中的单个文件重置为与master中的相同[重复]