我试图将一个文件(称为foo.txt)从一个存储库移动到另一个(不相关的)存储库,以保留其历史logging。 ebneter的问题显示了如何为子目录执行此操作。 taw的问题有一些提示和build议,但不是一步一步遵循的。 jkeating的问题看起来很有希望,但对我来说并不合适。 Googlesearch对于这个特定的用例来说是空的。 我正在寻找的是一个明确的命令序列来完成这一点。 我开始遵循的命令序列是这样的: $ git clone source-repo/ source-repo-copy $ cd source-repo-copy $ git filter-branch –tree-filter 'test ! "$@" = "foo.txt" && \ git rm –cached –ignore-unmatch $@ || true' –prune-empty 我的过滤命令的逻辑是git rm所有不是foo.txt的文件。 我加了|| true || true的命令强制它有一个零返回值来满足filter分支。 我的意图是将源repo-copy设置为我的目标存储库(target-repo)的远程,并假设git filter-branch过滤掉除foo.txt以外的所有内容,将source-repo-copy取回并合并到target-repo。 不幸的是, git filter-branch命令似乎没有效果。 它运行没有错误,似乎通过在源代码回购中的600多个提交,但是当它完成时, git log和源代码复制副本中的文件看起来是一样的。 不应该所有的文件,但foo.txt丢失,所有提交没有触摸它会从日志中消失? 在这一点上,我不知道如何进行。 有什么build议么?
我不小心添加了超过9000张照片到我的项目文件夹。 并承诺他们。 然后从磁盘中删除它们。 承诺。 现在我尝试将更改推送到git服务器。 但是花费太长时间,并且试图发送12Gb的数据。 我检查了磁盘上的文件大小,看到真正.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 。 但是从那以后我做了很多次,代码做了很多改变。
我正在使用下列来源从我的存储库中删除一些大的文件和目录: http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ 为什么我的git仓库如此之大? git filter-branch似乎只能在当前分支上工作 – 有没有办法一次把它应用到所有分支?
我有一个项目下git 。 有一天,我将所有项目文件从当前目录移动到项目下的foo/bar/ 。 我用git mv 。 然后,我添加了一些更多的文件,并对已经存在的文件做了一些修改 因此,现在当我查看foo/bar/file.c的历史logging时,我只能看到我在移动文件后所做的更改。 我试图以各种方式解决这个问题( filter-branch与子目录filter等),但没有什么帮助,所以我在这里相当堆叠。 我会感谢您可以给我的任何帮助。 谢谢!
如何使用git filter-branch删除没有变更集的提交? 我重写了我的git历史使用: git filter-branch –tree-filter 'rm -r -f my_folder' -f HEAD 这工作得很好,但现在我有很多提交与空的变更。 我想删除这些提交。 最好在msysgit。 重新激活并不是一个真正的select,因为我有超过4000个提交,其中一半必须删除。
我试图从我的远程仓库中删除一个文件运行: git filter-branch –index-filter 'git rm –cached –ignore-unmatch Rakefile' HEAD 但Git抱怨说 无法创build新的备份。 之前的备份已经存在于refs / original / 用-f强制覆盖备份 rm:无法删除/.git-rewrite/backup-refs:权限被拒绝 rm:无法删除目录/.git-rewrite:目录不为空 这是我已经删除Windows上的.git-rewrite目录。 我怎样才能删除该文件? 这是一个29Mb的文件,坐在我的回购,所以我很需要删除该文件。 我试图删除git rebase -i的提交,但显然是因为提交触及了很多不同的文件,Git抱怨冲突,我放弃了安全。
我想在我的所有提交中改变我的名字,姓氏和电子邮件,这可能吗?
恐怕我找不到像这种特殊情况的东西。 我有一个有很多历史的Git仓库:500多个分支,500多个标签,回到2007年中期。 它包含约19,500个提交。 我们希望在2010年1月1日之前删除所有的历史logging,以使它更小,更容易处理(我们将在档案库中保存完整的历史logging副本)。 我知道我希望成为新版本库的提交者。 我不能,但是,找出正确的git mojo截断回购开始与提交。 我猜猜的一些变种 git filter-branch 涉及移植物将是必要的; 可能还需要对待我们要分开保存的200多个分支中的每一个,然后将回购补回(我知道该怎么做)。 有没有人做过这样的事情? 如果这个问题我有git 1.7.2.3。
我想要的是类似于这个问题 。 但是,我想要拆分成一个单独的回购目录保持该回购目录中的子目录: 我有这个: foo/ .git/ bar/ baz/ qux/ 我想把它分成两个完全独立的仓库: foo/ .git/ bar/ baz/ quux/ .git/ qux/ # Note: still a subdirectory 如何在git中做到这一点? 我可以使用这个答案的方法,如果有一些方法可以将所有新的repo的内容转移到一个子目录,整个历史。
在成功地将一个SVN仓库转换为Git后,我现在有一个非常大的Git仓库,我想分解成多个较小的仓库并保存历史logging。 那么,有人可以帮助分解可能看起来像这样的回购: MyHugeRepo/ .git/ DIR_A/ DIR_B/ DIR_1/ DIR_2/ 进入如下所示的两个存储库: MyABRepo/ .git DIR_A/ DIR_B/ My12Repo/ .git DIR_1/ DIR_2/ 我已经尝试了以前的问题中的指示,但是在尝试将多个目录放入单独的回购( 分离(移动)子目录到单独的Git存储库中 )时并不适合。