95得票6回答
将大型Git仓库拆分为许多小型仓库

在成功将一个SVN仓库转换为Git之后,我现在有一个非常大的Git仓库,我想将其分割成多个较小的仓库并保留历史记录。 因此,可以有人帮忙分解类似这样的仓库:MyHugeRepo/ .git/ DIR_A/ DIR_B/ DIR_1/ DIR_2/ 分为两个看起来像...

79得票3回答
从Git仓库和GitHub远程完全删除文件

我不小心添加了一个文件夹的图片并提交了。然后我又做了一次提交。 接着我使用 git rm -f ./images 命令将这些文件移除并再次提交。 现在,我已经在该分支(master)中进行了许多次提交。在我的 HEAD 中,我没有 ./static/images 文件夹。 由于此原因,我的...

77得票2回答
Git - 使用filter-branch删除空提交记录

如何使用git filter-branch删除没有变更集的提交? 我使用以下命令重写了我的Git历史记录:git filter-branch --tree-filter 'rm -r -f my_folder' -f HEAD 这个方法很有效,但现在我有很多空变更集的提交。我想删除这些提交,...

75得票4回答
如何在Git仓库中移动一个目录并保留所有提交记录?

假设我有一个包含以下目录结构的代码仓库:repo/ blog/ _posts/ some-post.html another-file.txt 我想将_posts移动到仓库的顶层,使结构看起来像这样:repo/ _posts/ some-post.htm...

65得票8回答
在一系列提交中运行filter-branch

git filter-branch --env-filter ' export GIT_AUTHOR_EMAIL="foo@example.com" export GIT_AUTHOR_NAME="foo"' -- commita..commitb 在“你想重写哪个ref?”中获得结果。 ...

60得票3回答
Git,对所有分支使用filter-branch

我正在使用以下资源从我的存储库中清除一些大文件和目录: http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ 为什么我的 Git 存储库那么大? git filter-branch 似乎只能在...

59得票3回答
如何重写历史记录,使得除了我已经移动的文件之外,所有文件都在一个子目录中?

我有一个使用 git 管理的项目。有一天,我把所有项目文件从当前目录移动到了项目下的 foo/bar/ 目录中,我是使用 git mv 命令完成的。然后我添加了一些新文件并对已有文件进行了修改。 结果是,现在当我查看 foo/bar/file.c 文件的历史记录时,我只能看到我移动该文件之后...

54得票3回答
从git历史记录中删除已删除的文件

我想将一个子项目从我的git仓库中分离出来。 然而,与将子目录移动到单独的Git仓库中不同的是,我没有将其放在自己的子目录中(并且将其移动并执行上述操作后只生成移动后的历史记录)。 我已经克隆了我想要从中分离出子项目的分支,并删除了所有没有被子项目使用的东西,所以基本上我可以将其用作子项目的...

54得票6回答
如何使用index-filter等工具从Git仓库中提取带有提交历史记录的单个文件?

我有一个从SVN转换到Mercurial再到Git的Git仓库,我想要提取其中一个源文件。此外,我的文件名中有空格和奇怪的字符,如aÌ(编码不匹配导致Unicode ä损坏)。 我该如何从仓库中提取一个文件并将其放置在新仓库的根目录下?

51得票7回答
如何在Git历史记录中替换文件中的文本?

我一直使用基于界面的 Git 客户端 (smartGit),因此对 Git 控制台没有太多经验。 然而,我现在需要替换历史记录中所有 .txt 文件中的字符串(即不删除整个文件,只是替换字符串)。我找到了以下命令:git filter-branch --tree-filter 'git ls...