相关疑难解决方法(0)

将(移动)子目录分离到单独的Git存储库中

我有一个Git存储库,其中包含许多子目录.现在我发现其中一个子目录与另一个子目录无关,应该分离到一个单独的存储库.

如何在将文件的历史记录保存在子目录中的同时执行此操作?

我想我可以制作一个克隆并删除每个克隆的不需要的部分,但我想这会给我一个完整的树,当检查旧版本等.这可能是可以接受的,但我宁愿能够假装两个存储库没有共享历史记录.

为了说清楚,我有以下结构:

XYZ/
    .git/
    XY1/
    ABC/
    XY2/
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

XYZ/
    .git/
    XY1/
    XY2/
ABC/
    .git/
    ABC/
Run Code Online (Sandbox Code Playgroud)

git git-filter-branch git-subtree

1712
推荐指数
15
解决办法
25万
查看次数

使用Git管理大型二进制文件

我正在寻找如何处理我的源代码(Web应用程序)所依赖的大型二进制文件的意见.我们目前正在讨论几种选择:

  1. 手动复制二进制文件.
    • 亲:不确定.
    • Contra:我强烈反对这一点,因为它增加了在设置新站点/迁移旧站点时出错的可能性.建立另一个障碍.
  2. Git管理所有这些.
    • 专业:删除'忘记'复制重要文件的可能性
    • 反对:膨胀存储库并降低管理代码库和检出,克隆等的灵活性将需要相当长的时间.
  3. 单独的存储库.
    • Pro:检查/克隆源代码的速度很快,图像可以在自己的存储库中正确存档.
    • Contra:删除了在项目中拥有唯一的 Git存储库的简单性.它肯定会介绍一些我没有想过的其他事情.

您对此有何体验/想法?

另外:有没有人有多个Git存储库的经验并在一个项目中管理它们?

这些文件是程序的图像,该程序生成包含这些文件的PDF.文件不会经常更改(如年份),但它们与程序非常相关.没有文件,程序将无法运行.

git version-control binaryfiles large-files

517
推荐指数
10
解决办法
18万
查看次数

Git:"腐败的松散物体"

每当我从遥控器拉出时,我都会收到有关压缩的以下错误.当我运行手动压缩时,我得到相同的:

$ git gc
error: Could not read 3813783126d41a3200b35b6681357c213352ab31
fatal: bad tree object 3813783126d41a3200b35b6681357c213352ab31
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)

有谁知道,该怎么办?

从cat-file我得到这个:

$ git cat-file -t 3813783126d41a3200b35b6681357c213352ab31
error: unable to find 3813783126d41a3200b35b6681357c213352ab31
fatal: git cat-file 3813783126d41a3200b35b6681357c213352ab31: bad file
Run Code Online (Sandbox Code Playgroud)

从git fsck我得到这个(不知道它是否真的相关):

$ git fsck
error: inflate: data stream error (invalid distance too far back)
error: corrupt loose object '45ba4ceb93bc812ef20a6630bb27e9e0b33a012a'
fatal: loose object 45ba4ceb93bc812ef20a6630bb27e9e0b33a012a (stored in .git/objects/45/ba4ceb93bc812ef20a6630bb27e9e0b33a012a) is corrupted
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解读这个吗?

git version-control

293
推荐指数
13
解决办法
19万
查看次数

减少git存储库大小

我试图寻找一个关于减少回购规模的好教程,但没有找到.我如何减少我的repo大小...它大约10 MB,但事情是Heroku只允许50 MB,我不在附近完成开发我的应用程序.

我已经将通常的嫌疑人(日志,供应商,文档等)添加到.gitignore.虽然我最近只添加了.gitignore.

有什么建议?

git git-clean

267
推荐指数
3
解决办法
12万
查看次数

有没有办法清理git?

似乎我的项目随着每个git变得越来越大commit/push.有没有办法清理我的git文件夹?

git

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

列出并删除没有分支的Git提交(悬空?)

我有一个Git存储库,其中有很多提交,没有特定的分支,我可以git show,但是当我尝试列出包含它们的分支时,它没有报告任何内容.

我认为这是悬挂的提交/树问题(由于-D分支),所以我修剪了回购,但之后我仍然看到相同的行为:

$ git fetch origin

$ git fsck --unreachable
$ git fsck
Run Code Online (Sandbox Code Playgroud)

没有输出,没有悬空(对吧?).但提交存在

$ git show 793db7f272ba4bbdd1e32f14410a52a412667042
commit 793db7f272ba4bbdd1e32f14410a52a412667042
Author: ...
Run Code Online (Sandbox Code Playgroud)

它不能通过任何分支到达

$ git branch --contains 793db7f272ba4bbdd1e32f14410a52a412667042
Run Code Online (Sandbox Code Playgroud)

没有输出.

这个提交的状态究竟是什么?如何列出处于类似状态的所有提交?如何删除那些提交?

git branch git-dangling

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

为什么我的git存储库这么大?

145M = .git/objects/pack /

我编写了一个脚本来添加每个提交和提交的差异大小,然后再从每个分支的尖端向后移动.我得到129MB,没有压缩,没有分支机构的相同文件和分支机构之间的共同历史记录.

Git考虑了所有这些因素,所以我期望更小的存储库.那么为什么.git这么大?

我弄完了:

git fsck --full
git gc --prune=today --aggressive
git repack
Run Code Online (Sandbox Code Playgroud)

要回答有多少文件/提交,我有19个分支,每个文件大约有40个文件.287次提交,发现使用:

git log --oneline --all|wc -l
Run Code Online (Sandbox Code Playgroud)

它不应该使用10兆字节来存储有关此信息.

git

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

推送到GitHub时出错 - 没有足够的权限将对象添加到存储库数据库

尝试对我的GitHub存储库执行"git push"时,我回到了一个不寻常的错误:

Counting objects: 8, done.
Delta compression using 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 1.37 KiB, done.
Total 5 (delta 2), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack-objects exited with error code 128
error: unpack failed: unpack-objects abnormal exit
To git@github.com:bixo/bixo.git
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git@github.com:bixo/bixo.git'
  • 在从GitHub进行干净的克隆之后,我可以编辑/添加/提交/推送修改后的文件. …

git github

126
推荐指数
7
解决办法
16万
查看次数

运行'git gui'时如何跳过"松散对象"弹出窗口

当我运行'git gui'时,我会得到一个弹出窗口

This repository currently has approximately 1500 loose objects.

然后建议压缩数据库.我以前做过这个,它将松散的对象减少到大约250,但这并不会抑制弹出窗口.再次压缩不会改变松散物体的数量.

我们当前的工作流程需要大量使用'rebase',因为我们正在从Perforce过渡,而Perforce仍然是规范的SCM.一旦Git是规范的SCM,我们将定期进行合并,并且应该大大减轻松散的对象问题.

与此同时,我真的想让这个"有用"的弹出窗口消失.

git garbage-collection rebase git-gui git-gc

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

Git:如何从历史提交中删除文件?

我提交了id 56f06019(例如).在那个提交中,我不小心提交了大文件(50Mb).在另一个提交中,我添加相同的文件,但大小合适(小).现在我克隆的回购太重了:(如何从回购历史中删除那个大文件以减少我的回购的大小?

git

107
推荐指数
3
解决办法
4万
查看次数