【问题标题】:removing commit history in git删除 git 中的提交历史
【发布时间】:2013-01-23 05:41:42
【问题描述】:

我在玩 herokudjango 。要在 heroku 上托管我的 django 应用程序,我不得不多次来回更改许多文件(settings,urls,requirements.txt 等)(以便得到东西对)。因此,repo 中有很多提交。问题是我在github 上拥有稳定版本的代码(在完成 heroku 特定修改之前),现在如果我推送到我的代码会看起来很难看github 我为使应用程序在 heroku 上运行所做的所有提交。

所以,我想删除所有这些提交,并返回到较旧的稳定版本。然后我可以添加 heroku 特定修改并只进行一次提交。按照我的看法,我可以做到

1.从github拉取,然后添加heroku的具体更改。然后提交,推送到github,推送到heroku

2.在gitk中,我可以选择最后一个pre-heroku提交,右键单击并执行'Reset master branch to here'。然后进行heroku相关更改,提交,推送到github,推送到heroku.

正确的方法是什么?假设 pre-heroku 提交是 ver6,而我当前的提交是 ver10,我做了 4 次不必要的提交。我需要将它们擦干净,然后进行下一次提交 ver7 .

有人可以建议吗?

【问题讨论】:

    标签: git heroku commit


    【解决方案1】:

    方法与 Github 中提到的 here 非常相似。虽然我会为 Heroku 重写答案。

    为了删除提交历史

    • 创建一个新分支并结帐到它git checkout --orphan branch_new
    • 添加所有文件git add -A
    • 提交git commit -m "Deleting commit history"
    • 删除主分支git branch -D master
    • 将分支重命名为 master git branch -m master
    • 强制将更新推送到存储库git push -f heroku master

    【讨论】:

      【解决方案2】:
      1. 执行 git pull 以离线获取最新版本。
      2. git rebase --interactive 修改后的分支。为除第一个之外的所有内容选择 squash 以仅进行一次提交。 (将提交消息更改为合理的内容)
      3. git cherry-pick 在您将与稳定分支合并的任何开发分支上的一个提交。
      4. 合并推送

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 2019-11-14
        • 2021-06-19
        • 2014-11-20
        • 2014-06-27
        • 1970-01-01
        • 2014-09-29
        • 2011-10-26
        相关资源
        最近更新 更多