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

pru*_*nat 76 git

我有两个不相关的分支,主人和配置的git repo.我创建了配置,清除了所有文件,然后只放入配置文件中.现在我想在远程仓库上推送它,但因为它是新的,空分支(没有我所有更改的日志和原始分支的旧版本).

我怎样才能清除所有的历史并推动它?

Joh*_*ter 136

清除所有文件并没有消除历史记录.您需要先创建一个没有历史记录的分支,然后添加配置文件.这些天git checkout有一个--orphan选项,使一个没有历史的分支.以下是该--orphan选项的信息:

--orphan <new_branch>

创建一个名为<new_branch>的新孤立分支,从<start_point>启动并切换到它.在这个新分支上进行的第一次提交将没有父项,它将成为与所有其他分支和提交完全断开的新历史的根.

调整索引和工作树,就像之前运行"git checkout <start_point>"一样.这允许您通过轻松运行"git commit -a"来创建根提交,从而开始记录一组类似于<start_point>的路径的新历史记录.

当您想要从提交中发布树而不公开其完整历史记录时,这可能很有用.您可能希望这样做以发布项目的开源分支,该分支的当前树是"干净的",但其完整历史记录包含专有或其他受阻的代码.

如果要启动记录一组与<start_point>完全不同的路径的断开连接的历史记录,则应在运行"git rm -rf"创建孤立分支后立即清除索引和工作树. " 从工作树的顶层.之后,您将准备好准备新文件,重新填充工作树,从其他地方复制它们,提取tarball等.

这是结帐文档的链接.你也可以跑git help checkout.

一旦创建了没有历史记录的分支,那么当您将其推送到服务器时,它也不会具有该历史记录.FWIW,它帮助我将其git push视为"让远程分支与我的本地分支看起来一样".所以,如果你有历史和推动,它将有历史.如果你不这样做,那么推出的分支就不会.


Ger*_*mia 28

我怎样才能清除所有的历史并推动它?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit
Run Code Online (Sandbox Code Playgroud)

然后你可以运行你的

git push <remote-name> <branch-name>
Run Code Online (Sandbox Code Playgroud)


比照 这个单线

  • 应该注意的是,“--orphan”标志会阻止在“git分支”中列出新分支,直到对该分支进行第一次提交。 (7认同)

Thi*_*obo 15

我需要这样做才能向自由职业者发送一些代码,而无需共享私人信息或删除我的历史记录.

如果您有任何人使用SourceTree,这就是我设法做到这一点的方式.如果我做错了或忘记了某些事情,请告诉我,因为我对源代码管理非常不熟悉.

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

当我检查bitbucket时,似乎这似乎有效并且丢弃了我的提交历史.

希望这有助于某人.

  • 应该注意的是,“--orphan”标志会阻止在“git分支”中列出新分支,直到对该分支进行第一次提交。 (2认同)

ola*_*onm 7

git checkout --orphan <name_you_choose_for_orphan_branch>
git rm . -r -f
Run Code Online (Sandbox Code Playgroud)