Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git-还原旧合并中的特定文件,从历史记录中删除_Git - Fatal编程技术网

Git-还原旧合并中的特定文件,从历史记录中删除

Git-还原旧合并中的特定文件,从历史记录中删除,git,Git,几年前,有一个更改意外地被合并到了一个不应该提交的提交中。我想从一个合并中恢复一个文件,并将其从历史记录中删除,而不影响最近的合并。文件本身未在任何其他提交中编辑。您可以使用git filter branch git filter-branch --tree-filter 'rm -f <filename>' HEAD git过滤器分支--树过滤器'rm-f'头 更多信息,请参阅 但是这个过程更容易、更快 bfg --delete-files <filename> &

几年前,有一个更改意外地被合并到了一个不应该提交的提交中。我想从一个合并中恢复一个文件,并将其从历史记录中删除,而不影响最近的合并。文件本身未在任何其他提交中编辑。

您可以使用
git filter branch

git filter-branch --tree-filter 'rm -f <filename>' HEAD
git过滤器分支--树过滤器'rm-f'头
更多信息,请参阅

但是这个过程更容易、更快

bfg --delete-files <filename> <repo dir>
bfg——删除文件

如果您想重写一个现在包含多个合并的提交,并保留这些合并,请使用带有合并的交互式重基

git rebase -i -m -r <the commit>^
git-rebase-i-m-r^
在该分支上工作的任何人都应该
git pull--rebase=merges
在更改的历史记录上更新他们的工作


有关更多详细信息,请参阅。

是否更改了文件,添加了更改的文件,创建了新的提交,并将该提交合并到另一个分支?是否有任何一个分支被推送过?文件被更改,与其他文件一起提交,推送到一个工作分支,然后合并到主分支。对于措辞不明确,我深表歉意。我不想删除文件本身,只想让它恢复到没有更改历史记录的较旧版本。@arc我认为您想要的是从历史记录中删除对文件的最后一次编辑,这可以通过交互式重新基址来完成,但如果此后有很多分支,则可能会变得混乱。你能用一个具体的例子来编辑你的问题吗?@Arc另请参见