我有两个不相关的分支,master 和 configs 的 git repo。我已经创建了配置,清除了所有文件,然后只放在配置文件中。现在我想将它推送到远程仓库,但因为它是新的、空的分支(没有我所有更改的日志和原始分支的旧修订)。
我怎样才能清除所有的历史并推动它?
我有两个不相关的分支,master 和 configs 的 git repo。我已经创建了配置,清除了所有文件,然后只放在配置文件中。现在我想将它推送到远程仓库,但因为它是新的、空的分支(没有我所有更改的日志和原始分支的旧修订)。
我怎样才能清除所有的历史并推动它?
清除所有文件并不会消除历史记录。您需要先创建一个没有历史记录的分支,然后添加您的配置文件。这些天git checkout
有一个--orphan
选项可以创建一个没有历史的分支。以下是有关该--orphan
选项的信息:
--orphan <新分支>
创建一个名为 <new_branch> 的新孤立分支,从 <start_point> 开始并切换到它。在这个新分支上进行的第一次提交将没有父级,它将成为与所有其他分支和提交完全断开的新历史的根。
索引和工作树的调整就像您之前运行过“git checkout <start_point>”一样。这允许您通过轻松运行“git commit -a”来创建一个新的历史记录,该历史记录记录一组类似于 <start_point> 的路径以进行根提交。
当您想从提交中发布树而不暴露其完整历史时,这可能很有用。您可能希望这样做以发布一个项目的开源分支,该项目的当前树是“干净的”,但其完整历史记录包含专有或其他受累的代码位。
如果你想开始一个断开的历史记录,记录一组与 <start_point> 完全不同的路径,那么你应该在创建孤立分支后立即通过运行“git rm -rf”清除索引和工作树。 " 从工作树的顶层开始。之后,您将准备好准备新文件、重新填充工作树、从其他地方复制它们、提取 tarball 等。
这是checkout文档的链接。你也可以跑步git help checkout
。
一旦您创建了没有历史记录的分支,那么当您将其推送到服务器时,它也不会具有该历史记录。FWIW,它帮助我将其git push
视为“使远程分支看起来与我的本地分支相同”。所以如果你有历史,并且推动,它就会有历史。如果你不这样做,那么推送的分支不会。
我怎样才能清除所有的历史并推动它?
git checkout --orphan <name_you_choose_for_orphan_branch>
git commit
然后你可以运行你的
git push <remote-name> <branch-name>
我需要这样做以向自由职业者发送一些代码,而无需共享私人信息或删除我的历史记录。
如果你们中的任何人使用 SourceTree,这就是我设法做到的。如果我做错了什么或忘记了什么,请告诉我,因为我对源代码控制管理非常不熟悉。
当我检查 bitbucket 时,似乎这似乎有效并丢弃了我的提交历史记录。
希望这可以帮助某人。
git checkout --orphan <name_you_choose_for_orphan_branch>
git rm . -r -f