我的代码位于项目的主分支中。我希望代码位于单独的分支中,而不是在主分支中。我可以创建一个新的分支master。但是在创建分支之后,是否可以从主分支中删除所有代码,这样如果我稍后重新调整或将我的新分支合并到主分支中,就不会导致任何问题?
谢谢
这有点棘手,如果其他人已经拥有您提交的副本,您就无法正确执行此操作。 IE。如果您将主分支推送到其他人正在使用的远程存储库,或者如果人们直接从您的存储库中提取,则没有干净的方法可以摆脱这种情况。
你必须重写 master 分支的历史。这里我们必须看两个案例。从你的问题来看,我认为master
,有一个已创建的提交before您想要从 master 中删除的任何代码提交。令该提交的 ID 为rootcommit
。如果您的代码已经有一个新分支(从 master 分支出来),请跳过步骤 1 和 2。
-
git checkout master
: 确保你是master。
-
git checkout -b my-fancy-new-branch
:创建新的功能分支。
-
git checkout master
: 切换回master
-
git reset --hard rootcommit
:将 master 重置为您自己提交之前的状态。
- 可选,如果您有遥控器,则可以从以下位置拉取:
git pull --ff
(如果由于拉动没有快进而失败,则必须重新考虑rootcommit
。其中包含您的一些作品)
事实上,如果您在处理代码时从任何远程拉取,这甚至应该有效。如果您想让自己的提交位于远程提交之上,您可以在远程更改上重新建立新分支的基础:
git checkout my-fancy-new-branch
git rebase master
将这些更改应用到远程,这是可能的,但是巨大的麻烦,你现在必须对 master 进行强制推送。每个拥有该存储库克隆的人现在在拉取时都必须特别小心,因为 master 的历史已经改变。他们必须执行与您基本相同的步骤,然后拉取并重新应用其本地更改(如果有)。要进行强制推送,您必须执行:
git checkout master
git push --force
如前所述,强制推送确实很邪恶,您可能应该避免它。如果可以的话,将提交留在历史记录中,下次做得更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)