使用大文件恢复提交并解决二进制合并冲突

Posted

技术标签:

【中文标题】使用大文件恢复提交并解决二进制合并冲突【英文标题】:Revert commit with Large file and resolve binary merge conflict 【发布时间】:2021-08-02 14:09:17 【问题描述】:

我想 push 我的提交到 GitHub,但它不允许我,因为文件 Extras.pkl 太大。我(意外地)在dfa4bfe 中添加了文件 7 提交,但目前在我的存储库中找不到(它似乎已被删除)。 git revert dfa4bfe提示

warning: Cannot merge binary files: MuonRate/nHits_distribution.png (HEAD vs. parent of dfa4bfe... Add HRV split graph and z direction dist) 
error: could not revert dfa4bfe... Add HRV split graph and z direction dist

那是因为在同一个提交中有 2 个图像(一个正在制造冲突)。

我使用git checkout --ours/theirs "MuonRate/nHits_distribution.png" 手动分配版本并使用git addgit commit 提交这些。但后来我得到以下信息:

Your branch is ahead of 'origin/main' by 9 commits.
  (use "git push" to publish your local commits)
You are currently reverting commit dfa4bfe.

Untracked files:
        #some unimportant files

nothing added to commit but untracked files present

注意最后的第 3 行和最后一行。当我使用git commit -m "empty commit to escape revert" --allow-empty 时,You are currently reverting commit dfa4bfe. 行就消失了。但是如果我git push origin main,我得到完全相同的错误,说文件Extras.pkl太大了。

问题:如何撤消来自Extras.pkl 的提交并解决二进制问题?

Git 日志:

* da43e5a (HEAD -> main) empty commit to escape revert
* e8d3f7a add .gitignore
* 633b6f2 Delete extrapkl
* 9f2366b .
* e2c9712 Add mplstyle
* b3702dc Rerun and delete filters for V9
* dfa4bfe Add HRV split graph and z direction dist
* 76bee13 Plot nHist complete
* 7f227ea First histogram of nHits
* b82b78b Create Multi directory data loop
etc.

注意:,我在还原期间的任何提交都不会出现在历史记录中。 问题在于提交dfa4bfe Add HRV split graph and z direction dist

【问题讨论】:

【参考方案1】:

在the github page regarding sensitive information 之后,我已经解决了这个问题。供将来参考和其他人参考:

如果问题出在您的本地仓库中,请跳过以下 2 个步骤:

    git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY cd YOUR-REPOSITORY

PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA 更改为您的文件位置,但保留引号。

    git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \ --prune-empty --tag-name-filter cat -- --all 按两次回车 git push ORIGIN MAIN

【讨论】:

以上是关于使用大文件恢复提交并解决二进制合并冲突的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 中,如何恢复在提交之前还原的暂存文件?

恢复旧的合并提交文件而不影响后续提交

git 解决二进制文件冲突

还原合并提交后解决合并冲突

如何解决还原提交冲突

个人作坊,vs 集成 GIT版本控制,GIT恢复历史版本时,总提示有冲突要求合并. 请问怎么才能还原到历史版本