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