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

时间:2012-09-22 10:45:05

标签: git

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

我如何清除所有历史并推动它?

3 个答案:

答案 0 :(得分:122)

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

  

- 孤儿< new_branch>

     

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

     

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

     

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

     

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

以下是checkout文档的链接。您也可以运行git help checkout

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

答案 1 :(得分:20)

如何清除所有历史并将其推送?

  $('#list-search').select2({
    minimumInputLength: 3,
    ajax: {
      url: ajax_post_params.ajax_url,
      dataType: 'json',
      data: function (term, page) {
        post_type = $(this).attr("data-post-type");
        return {
          action: 'list_posts',
          list_search: term,
          post_type: post_type
        };
      },
      processResults: function (data, params) {
        console.log(data);
        console.log(params);
        params.page = params.page || 1;
        return {
          results: data.items,
          pagination: {
            more: (params.page * 30) < data.total_count
          }
        };
      },
      cache: true
    }
  });

然后你可以运行你的

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

<小时/> CF。 this one-liner

答案 2 :(得分:15)

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

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

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

    希望这可以帮助别人。