如何在Git中修改或删除旧的提交?

时间:2017-04-07 12:20:25

标签: git github bitbucket git-checkout

从过去的几天开始,我一直在我的本地添加和提交文件。我的分支现在是16个提交,来自&origin; master'。

我想将它们推送到我的git repo但是其中一个文件非常大我的推送命令失败了。有没有办法从存储中删除该提交,或者我必须在头上进行硬重置。

4 个答案:

答案 0 :(得分:2)

如果您只想跳过提交,请执行git rebase -i master并选择drop以便跳过提交。如果您只想从中删除单个文件,请选择edit并修改提交以删除该文件。

答案 1 :(得分:2)

  1. 你可以使用壁球
  2. BFG
  3. Move HEAD back to previous commit (link)
  4. squash

    # edit all the commits up to the given sha-1
    git rebase -i <sha-1>
    

    enter image description here

      

    但是其中一个文件非常大我的推送命令失败了......

    <强> How to remove big files from the repository

    您可以使用git filter-branch或BFG。 https://rtyley.github.io/bfg-repo-cleaner/

      

    <强> BFG Repo-Cleaner

         

    git-filter-branch的替代品。

         

    BFG是git-filter-branch的一种更简单,更快速的替代方法,用于清除Git存储库历史记录中的错误数据

         

    *删除疯狂的大文件*
      *删除密码,凭证和&amp;其他私人数据

    示例(来自官方网站)

      

    在所有这些示例中,bfg是java -jar bfg.jar的别名。

    # Delete all files named 'id_rsa' or 'id_dsa' :
    bfg --delete-files id_{dsa,rsa}  my-repo.git
    

    enter image description here

答案 2 :(得分:0)

如果您只想删除文件,那么为什么不通过删除文件然后提交更改来实现?

现在,在您最近的提交中,文件不存在。

您现在应该能够毫无问题地将分支推送到遥控器。

答案 3 :(得分:-1)

你可以做的是你可以使用git rebase选项并压缩所有提交。