相关疑难解决方法(0)

如何从git存储库中删除旧历史记录?

我恐怕找不到任何类似这种特殊场景的东西.

我有一个有很多历史的git存储库:500多个分支,500多个标签,可以追溯到2007年中期.它包含~19,500次提交.我们想在2010年1月1日之前删除所有历史记录,以使其更小更容易处理(我们将在存档库中保留历史记录的完整副本).

我知道我想要成为新存储库的根目录的提交.但是,我不能找出正确的git mojo来截断repo以从那个提交开始.我猜的是一些变种

git filter-branch
Run Code Online (Sandbox Code Playgroud)

涉及移植是必要的; 它也可能是必要的对待每一个我们要分别保持在200多个分支机构,然后修补回购重新走到一起(这是我知道该怎么做).

有没有人做过这样的事情?如果重要的话,我有git 1.7.2.3.

git git-filter-branch

188
推荐指数
8
解决办法
11万
查看次数

如何在Git仓库中移动所有提交的目录?

假设我有一个包含此目录结构的仓库:

repo/
  blog/
    _posts/
      some-post.html
  another-file.txt
Run Code Online (Sandbox Code Playgroud)

我想移动_posts到repo的顶层,所以结构将如下所示:

repo/
  _posts/
    some-post.html
  another-file.txt
Run Code Online (Sandbox Code Playgroud)

这是够简单的git mv,但我想使历史看起来好像_posts 总是在回购的根源存在,我希望能够得到的全部历史some-post.html通过git log -- _posts/some-post.html.我想我可以用一些魔法git filter-branch来完成这个,但我还没弄清楚到底是怎么做到的.有任何想法吗?

git git-filter-branch

68
推荐指数
2
解决办法
3万
查看次数

将git仓库中的一组文件拆分到他们自己的存储库中,保留相关历史记录

可能重复:
如何在保留子目录的同时拆分git存储库?

有一次,我将我的代码添加到现有的git repo中,并且已经承诺了很多,因为其他开发人员已经提交到repo中的其他现有文件. 现在我想将我的代码拆分为自己的repo,但保留我的特定文件的所有更改历史记录.

通过阅读其他人为分割代码所做的工作,我正在查看filter-branch和执行--index-filter--tree-filter使用rm命令来查找我不关心的文件.我不想使用,--subdirectory-filter因为它不适合将我的代码保存为topdir的子目录(我们也共享一个子目录).更复杂的是,原始存储库中的一些文件随着时间的推移已经移动了一些,并且有一些文件被创建然后被删除.这使得设计一个rm列表有点......具有挑战性.

我正在寻找一种方法来过滤所有/除了/文件/目录列表.有人知道这样做的方法吗?

git git-filter-branch

36
推荐指数
1
解决办法
8141
查看次数

在新克隆上使用 git-filter-repo 从 git 历史记录中删除文件

我正在按照此答案从 git 历史记录中删除包含凭据的单个文件。我有 git 2.35.1 和filter-repo 22826b5a68b6。我需要的命令显然是:

\n
git-filter-repo --path auth.json --invert-paths\n
Run Code Online (Sandbox Code Playgroud)\n

如果我尝试将此应用到我的工作存储库,我会收到此错误:

\n
Aborting: Refusing to destructively overwrite repo history since\nthis does not look like a fresh clone.\n(expected freshly packed repo)\n
Run Code Online (Sandbox Code Playgroud)\n

因此,我使用 检查了一个新副本git clone,并且该命令成功运行:

\n
Parsed 861 commits\nNew history written in 0.69 seconds; now repacking/cleaning...\nRepacking your repo and cleaning out old unneeded objects\nHEAD is now at 7212384 Update app.css\nEnumerating objects: 8203, done.\nCounting objects: 100% (8203/8203), done.\nDelta compression using up to 24 threads\nCompressing objects: …
Run Code Online (Sandbox Code Playgroud)

git repository git-rewrite-history

14
推荐指数
1
解决办法
9299
查看次数

如何将git repo中的单个文件拆分为新的repo?

我有一个带有几个目录的git仓库和一个文件MyFile.ext.

/
  LargeDir1/
  LargeDir2/
  LargeDir3/
      .
      .
      .
  MyFile.ext
Run Code Online (Sandbox Code Playgroud)

我想在其中开始一个新的回购MyFile.ext,并保留所有与之相关的历史,但忽略其他一切(所有的LargeDirs).我怎样才能做到这一点?

对于目录,我已成功使用此答案,但我在单个文件上尝试过,但它不起作用.

我也尝试过这个答案,除了我的文件外,它确实删除了所有内容,但它似乎也留下了所有的历史.

git

9
推荐指数
1
解决办法
624
查看次数

我可以只从另一个 git 存储库中提取某些文件吗?

例如,假设我有存储库 1 和存储库 2。存储库 1 有一个文件/a/b/c/d。我可以将此文件作为 导入到存储库 2 中吗/e/f/g/h

原因是我想从不同的 git 存储库的实验分支中提取更改。我尝试将所有内容合并在一起,但存在大量(各种)冲突。因此,我怀疑我是否可以合并整个分支,但我想尝试尽可能多地引入。

有什么方法可以做我想做的事情,或者我只能直接复制文件吗?

git merge branch git-branch

6
推荐指数
1
解决办法
1万
查看次数