如何推动没有历史的新分支


93

我有两个不相关的分支git repo,master和configs。我已经创建了配置文件,清除了所有文件,然后仅放置在配置文件中。现在,我想将其推送到远程仓库中,但由于它是新的空分支(没有我的所有更改和原始分支的旧修订的日志)。

我如何清除所有历史并进行推广?


3
这看起来很相似: stackoverflow.com/questions/1384325/...
马克

Answers:


155

清除所有文件不会摆脱历史记录。您需要先创建一个没有历史记录的分支,然后添加您的配置文件。这些天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视为“使远程分支看起来与本地分支相同”。因此,如果您有历史记录并进行推送,它将具有历史记录。如果您不这样做,则推送的分支不会。


36

我如何清除所有历史并进行推广?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

然后您可以运行

git push <remote-name> <branch-name>


cf. 这个单线


16

我需要执行此操作以向自由职业者发送一些代码,而不共享私人信息或删除我的历史记录。

如果任何人都在使用SourceTree,这就是我设法做到的方式。如果我做错了什么,或者由于我不熟悉源代码管理而忘记了什么,请告诉我。

  1. 我去了源代码树上的终端按钮。
  2. 我使用以下命令创建了一个新的“孤立”分支:'git checkout --orphan clean-ver'其中clean-ver是我的分支名称
  3. 我关闭了终端,发现我的提交日志已清除,因为我在新的孤立分支中。我上演了所有源代码并提交了更改。
  4. 我在存储库>添加远程或存储库>存储库设置>添加中设置了我的bitbucket存储库。
  5. 我将其关闭,然后单击按钮
  6. 我选择了我的新“ clean-ver”分支。

当我检查bitbucket时,这似乎已经奏效并丢弃了我的提交历史记录。

希望这可以帮助某人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.