Questions tagged «git-filter-branch»

git filter-branch是一个本地Git工具,用于广泛重写分支,通常用于从Git存储库历史记录中删除不需要的大文件或秘密文件。

30
如何在Git中更改多次提交的作者和提交者名称以及电子邮件?
Наэтотвопросестьответына 堆栈溢出нарусском:Поменятьуавтораикоммитераемейлиимя вовсехкоммитах 我当时正在学校计算机上编写一个简单的脚本,然后将更改提交到Git(在笔驱动器中的一个回购中,该回购是从家里的计算机中克隆的)。经过几次提交后,我意识到我正在以root用户身份提交东西。 有什么办法可以将这些提交的作者更改为我的名字?

25
将子目录分离(移动)到单独的Git存储库中
我有一个Git存储库,其中包含许多子目录。现在,我发现一个子目录与另一个子目录无关,应该将其分离到单独的存储库中。 如何在保留子目录中文件历史记录的同时执行此操作? 我想我可以制作一个克隆并删除每个克隆中不需要的部分,但是我想这会在检出较旧的修订版时为我提供完整的树。这可能是可以接受的,但我希望能够假装两个存储库没有共享的历史记录。 为了清楚起见,我具有以下结构: XYZ/ .git/ XY1/ ABC/ XY2/ 但我想这样: XYZ/ .git/ XY1/ XY2/ ABC/ .git/ ABC/


11
从Git历史记录中删除敏感文件及其提交
我想在GitHub上放置一个Git项目,但它包含某些包含敏感数据的文件(用户名和密码,例如Capistrano的/config/deploy.rb)。 我知道我可以将这些文件名添加到.gitignore,但这不会删除它们在Git中的历史记录。 我也不想通过删除/.git目录重新开始。 有没有一种方法可以删除您Git历史记录中特定文件的所有痕迹?

11
如何从git存储库中删除旧历史记录?
恐怕找不到类似此特定情况的任何东西。 我有一个历史悠久的git储存库:500多个分支机构,500多个标签,可以追溯到2007年中期。它包含约19,500次提交。我们希望在2010年1月1日之前删除所有历史记录,以使其更小且更易于处理(我们会将历史记录的完整副本保存在存档存储库中)。 我知道我想要成为新存储库的根的提交。但是,我无法找出正确的git mojo来截断存储库以从该提交开始。我猜是 git filter-branch 涉及移植物是必要的;可能还需要分别对待我们想要保留的200多个分支中的每个分支,然后将回购修补到一起(我确实知道该怎么做)。 有没有人做过这样的事情?如果有的话,我已经有了git 1.7.2.3。

10
将许多子目录分离到一个新的单独的Git存储库中
该问题基于将子目录分离到单独的Git存储库中 我不想分离一个子目录,而是要分离几个。例如,我当前的目录树如下所示: /apps /AAA /BBB /CCC /libs /XXX /YYY /ZZZ 我想要这样: /apps /AAA /libs /XXX 该--subdirectory-filter给的说法git filter-branch是行不通的,因为它摆脱了一切除了给定目录的第一次的运行。我以为--index-filter所有不需要的文件都可以使用该参数(尽管很乏味),但是如果尝试多次运行它,则会收到以下消息: Cannot create a new backup. A previous backup already exists in refs/original/ Force overwriting the backup with -f 有任何想法吗?TIA


4
从Git存储库中清除文件失败,无法创建新备份
我尝试通过运行以下命令从远程存储库中删除文件: git filter-branch --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD 但是Git抱怨 无法创建新的备份。refs / original /中已存在先前的备份/ 用-f rm 强制覆盖备份:无法删除/.git-rewrite/backup-refs:权限被拒绝 rm:无法删除目录/.git-rewrite:目录不为空 这是在我已经删除Windows上的.git-rewrite目录之后。 如何删除该文件?我的存储库中有一个29Mb的文件,因此我非常需要删除该文件。 我试图删除中的提交git rebase -i,但显然是因为提交涉及很多不同的文件,Git抱怨冲突,因此我中止以确保安全。

8
git rm-致命:pathspec与任何文件都不匹配
我无意中将超过9000张照片添加到我的项目文件夹中。并承诺。然后从磁盘删除它们。致力于。 现在,我尝试将更改推送到git服务器。但是它花费的时间太长,并试图发送12 Gb的数据。 我检查了磁盘上的文件大小,发现该.git文件夹实际占用了12 Gb。 如何从那里删除照片?我尝试过git rm,但失败了: ❯ git rm public/photos fatal: pathspec 'public/photos' did not match any files 因为我已经将它们从磁盘上删除了,但是它们仍在.git文件夹中。 我试图添加public/photos到.gitignore: public/photos/ *.zip 但是没有结果。当然hard reset head,当我的项目中没有太多垃圾照片时,我可能会稍等片刻。但是从那以后,我投入了很多次,并对代码进行了很多更改。

5
将大型Git存储库拆分为许多较小的存储库
在将SVN信息库成功转换为Git之后,我现在拥有一个非常大的Git信息库,我想分解为多个较小的信息库并维护历史记录。 因此,有人可以帮助分解可能如下所示的存储库: MyHugeRepo/ .git/ DIR_A/ DIR_B/ DIR_1/ DIR_2/ 分为两个如下所示的存储库: MyABRepo/ .git DIR_A/ DIR_B/ My12Repo/ .git DIR_1/ DIR_2/ 我已经尝试按照上一个问题中的指示进行操作,但是当尝试将多个目录放入一个单独的仓库(将子目录分离(移动)到单独的Git存储库中)时,它确实不合适。

3
完全从Git存储库中删除文件并在GitHub上远程
我不小心添加了一个图像文件夹并提交了。然后,我又提交了一个。然后,我使用删除了这些文件git rm -f ./images并再次提交。 现在,我在该分支(master)中进行了更多提交。在我的头上,我没有该./static/images文件夹。 因此,我的回购规模增加了很多。如何完全清除这些斑点?我也想从我的远程GitHub存储库中删除它。

2
Git-使用filter-branch删除具有空变更集的提交
如何使用git filter-branch删除没有更改集的提交? 我使用以下方式重写了我的git历史记录: git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD 这个工作很好,但是现在我有很多带有空变更集的提交。我想删除那些提交。最好在msysgit中。 变基不是真正的选择,因为我有4000多个提交,其中一半必须删除。

3
如何在Git存储库中为所有提交移动目录?
假设我有一个包含以下目录结构的存储库: repo/ blog/ _posts/ some-post.html another-file.txt 我想移到存储库_posts的顶层,因此结构如下所示: repo/ _posts/ some-post.html another-file.txt 这样做很简单git mv,但是我想使历史看起来好像_posts 一直存在于仓库的根部,并且我希望能够获得some-post.htmlvia的全部历史git log -- _posts/some-post.html。我想我可以使用一些魔术git filter-branch来完成此操作,但是我还没有弄清楚该怎么做。有任何想法吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.