Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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_Atlassian Sourcetree - Fatal编程技术网

Git 修改过去的提交(从多个最近的提交中删除文件)

Git 修改过去的提交(从多个最近的提交中删除文件),git,atlassian-sourcetree,Git,Atlassian Sourcetree,我最近有7次提交,我想从中删除文件夹-此文件夹(及其内容)不需要在这些提交中,也不在以前的提交中(在过去的7次提交之前)。我可以修改这些最近的7次提交并删除此文件夹吗 这7项承诺不是在主分支上作出的。因此,另一种可能的选择是在主服务器上创建一个新的分支/拉取请求,并重新提交7次提交中的最新一次,而不暂存相关文件夹 这两个选项中有一个是可能的吗?有两个基本选项 首先,如果文件是在这七次提交中的第一次提交中添加的,并且在随后的六次提交中没有涉及到它们,那么您可以git rebase-i,为第七次最早

我最近有7次提交,我想从中删除文件夹-此文件夹(及其内容)不需要在这些提交中,也不在以前的提交中(在过去的7次提交之前)。我可以修改这些最近的7次提交并删除此文件夹吗

这7项承诺不是在主分支上作出的。因此,另一种可能的选择是在主服务器上创建一个新的分支/拉取请求,并重新提交7次提交中的最新一次,而不暂存相关文件夹


这两个选项中有一个是可能的吗?

有两个基本选项

首先,如果文件是在这七次提交中的第一次提交中添加的,并且在随后的六次提交中没有涉及到它们,那么您可以
git rebase-i
,为第七次最早的提交选择“编辑”,即添加文件的提交,然后在将其放回shell后,您可以“git rm”您想要删除的内容,提交,
git-rebase——继续
,然后在重播剩余的提交之后,再次重新设置基址,并将新提交压缩到其父级中。这将是处理这种情况的最简单方法

否则,您可以使用带有
--tree filter
选项的
git filter branch
,从所有七个提交中删除有问题的文件


编辑:请注意,此操作过程假定您没有向上推分支。如果您已经推动了该分支,这将增加一些额外的物流。基本上,一旦你推了,你需要和任何依赖你的分支的人协调这个动作,因为你会让他们处于高位。基本上,您将放弃当前分支,并将其替换。

当我阅读问题时,我的印象是该分支未被推送,仅存在于其克隆中。谢谢!我来试一试。我推动了这一分支,但只是最近。还没有其他人在使用它。@WilliamGP,请注意,在
git-rm
之后,您需要执行
git-commit--amend
。此外,在推送时,还需要执行
gitpush-f