我提交了一个> 100MB(github的限制)3个提交前的文件,它不会让我推送我的新提交。
我想在保留我的工作的同时删除这3个提交,所以我可以重新提交它们,但没有大量文件。
最简单的方法是什么?
PS我只能访问git命令行。
答案 0 :(得分:0)
完整信息可以在这篇文章中找到:
How to move HEAD back to a previous location? (Detached head)
最好的选择是做一些没有在那里被剥夺的东西,
git reset HEAD --mixed HEAD^3
它将检查第3次提交并使用上述帖子从此时开始继续工作。
按照其中描述的结帐:
git checkout
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back
这将检查指向所需提交的新分支 此命令将结帐到给定的提交 此时,您可以创建一个分支,并从此开始工作。
# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
#in order to be able to update the code.
git checkout <commit-id>
# create a new branch forked to the given commit
git checkout -b <branch name>
为了做一个git squash,请按照以下步骤操作:
// X is the number of commits you wish to squash, in your case 6
git rebase -i HEAD~X
一旦你压缩你的提交 - 选择e
来编辑提交。
如果您只想从repo中删除大文件,请使用以下命令: 你应该使用这个工具:
https://rtyley.github.io/bfg-repo-cleaner/
这是完成此类任务的完美工具
BFG Repo-Cleaner
git-filter-branch的替代品。
BFG是git-filter-branch的一种更简单,更快速的替代方法,用于清除Git存储库历史记录中的错误数据:
- 删除疯狂的大文件
- 删除密码,凭证和密码其他私人数据
在所有这些示例中,bfg是java -jar bfg.jar的别名。
# Delete all files named 'id_rsa' or 'id_dsa' :
bfg --delete-files id_{dsa,rsa} my-repo.git