草庐IT

git - filter-branch 删除多余的目录

我正在将几个Subversion存储库迁移到Git,但它们的设置有点奇怪:标准的主干/分支/标签结构位于存储库的几个子目录中。/branches和/tags都是空的,因此git-svn导入最终只包含主干目录。svn/proj1/trunk/src/proj2/trunk/src/我想使用gitfilter-branch删除多余的trunk文件夹,但保留其余的:svn/proj1/src/proj2/src/基于最后exampleinthedocumentation,这是我目前所拥有的:gitfilter-branch--index-filter\'gitls-files-s|sed"s

git - 使用 'git filter-branch' 来更正最后 N 次提交中的提交者日期?

我最近需要使用“gitam”向我的存储库应用16个补丁,并且我小心翼翼地为每个补丁使用“--committer-date-is-author-date”。但是,我还需要为每个am'd补丁调整提交消息,并且——在我完成所有16个补丁之后——我发现“commit--amend”增加了每个补丁的提交者时间戳。我最终了解到我的问题可以一举解决gitrebase--committer-date-is-author-date但在尝试使用“filter-branch”解决我的问题之前,它没有用。我很好奇我做错了什么。这是我的尝试:gitfilter-branch--env-filter\'expor

git - 在 filter-branch 之后将每个人重新定位到更改的 git 历史记录

我们的git存储库在其历史记录中有一堆不再需要的大文件。我想使用ProGit中解释的过滤器分支技术删除它们:http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery然后我将使用gitpush--forceall将其发送到我们的共享存储库,如下所述:UpdateadevelopmentteamwithrewrittenGitrepohistory,removingbigfiles但是。ProGit说我需要让每个人都rebase,因为我正在改变历史。我们只是很少使用rebase,通常只是作为一种替代的

git filter-branch 被拒绝后的 git push

我将一个git仓库分成3个。我使用了Detach(move)subdirectoryintoseparateGitrepository分离文件夹并将它们成功推送到新的gitrepos。在现有存储库中,我使用以下命令清除移动的目录。gitfilter-branch-f--index-filter"gitrm-q-r-f--cached--ignore-unmatchlib/xxx/$REPO"--prune-emptyHEAD现在当我做gitst在原始repo协议(protocol)中,我得到:#Onbranch1.5.0nothingtocommit(workingdirectoryc

git - 如何从 'git filter-branch' 获取旧的->新的重写提交 SHA 列表?

运行gitfilter-branch后,我如何获得由filter-branch重写为新的对应提交SHA的旧提交SHA列表?例如,类似于:b19fd985746c1f060f761d42d353e387bec243fb->c8ab40ef9bae3b58642a8d1e5b90720d093a60b5c5ebba1eeb92ca76c0effa32de14178ec7f07db6->4d5a9958b98dbcfa47ce1354bb2af4cc77904639705f71543235b872ca3e1067538e36d14044429d->d2aafbd6e5b91955b62dee

git - 标签可以在 git filter-branch 和 rebase 之后自动移动吗?

编辑问题归结为“gitrebase也可以被指示为标签rebase吗?”但对原始问题的回答也会有所帮助。询问Howtoprependthepasttoagitrepository?我关注了theseinstructions.编辑>然后我重新定位以包含一个只在快照中的文件,参见here./edit>由于历史被重写(由gitfilter-branch或gitrebase或两者?)所有标签仍在原始时间线上*,我想以某种方式将它们移动到新的一个。我想我让所有带有标签的提交消息都是独一无二的,这样我就可以尝试编写一个使用它们的脚本,但是更通用的gitmove-tags会更好。那么,有没有办法解决“

git - 使用 git-filter-branch 提取多个目录

我有一个很大的存储库,目前在顶级子文件夹中包含多个项目,比如/a、/b、/c和/d。现在我想将该存储库分成两个不同的存储库:一个包含/a和/b,另一个包含/c和/d。我知道gitfilter-branch--subdirectory-filter,它非常适合提取单个目录,但它似乎不能一次提取多个目录。我也知道gitfilter-branch--prune-empty--tree-filter,它允许我删除所有内容,但两个想要的目录。这感觉不完全正确,因为我必须手动指定所有可能存在的顶层目录。有没有更好的方法从一个大仓库中提取两个目录?PS:当然,使用gitfilter-branch以外

git - 在一系列提交上运行 filter-branch

gitfilter-branch--env-filter'exportGIT_AUTHOR_EMAIL="foo@example.com"exportGIT_AUTHOR_NAME="foo"'--commita..commitb您想重写哪个ref的结果?看来filter-branch不允许您使用范围符号使用两个任意引用之间的范围。如果这种方法不可行,那么在一系列连续提交(分支历史中的某处)上运行过滤器的最直接的方法是什么。 最佳答案 正如@kan所说,您不能在历史中间应用过滤器分支。你必须从你已知的提交申请到历史结束gitfilt

git - rsync 根据 .gitignore & .hgignore & svn :ignore like --filter=:C 排除

Rsync包含一个漂亮的选项--cvs-exclude以“以与CVS相同的方式忽略文件”,但CVS已经过时多年。有没有办法让它也排除现代版本控制系统(Git、Mercurial、Subversion)会忽略的文件?例如,我有很多从GitHubcheckout的Maven项目。通常它们包括一个.gitignore至少列出target,默认的Maven构建目录(可能出现在顶层或子模块中)。由于这些目录的内容完全是一次性的,而且它们可能比源代码大得多,所以我想在使用rsync进行备份时将它们排除在外。当然我可以明确地--exclude=target/但这会意外地抑制不相关的目录,这些目录恰好

php - 错误 header : ap_headers_output_filter() after putting cache header in htaccess file

接收错误:[debug]mod_headers.c(663):headers:ap_headers_output_filter()在我将其包含在htaccess文件中之后:#6DAYSHeadersetCache-Control"max-age=518400,public"#2DAYSHeadersetCache-Control"max-age=172800,public,must-revalidate"#2HOURSHeadersetCache-Control"max-age=7200,must-revalidate"如果我能解决这个问题,请提供任何帮助?