相关疑难解决方法(0)

从git/GitHub的历史记录中删除文件夹及其内容

我正在使用我的GitHub帐户上的存储库,这是我偶然发现的一个问题.

  • Node.js项目包含一个安装了几个npm软件包的文件夹
  • 包裹在node_modules文件夹中
  • 将该文件夹添加到git repository并将代码推送到github(当时没有想到npm部分)
  • 意识到你并不真的需要该文件夹成为代码的一部分
  • 删除了那个文件夹,推了它

在那个例子中,总git repo的大小约为6MB,其中实际代码(除了该文件夹之外的所有代码)只有大约300 KB.

现在我正在寻找的是从git的历史中删除该包文件夹的细节的一种方法,所以如果有人克隆它,他们不必下载6mb的历史记录,他们将获得唯一的实际文件截至上次提交时将为300KB.

我查找了可能的解决方案并尝试了这两种方法

Gist似乎在运行脚本之后起作用,它表明它摆脱了该文件夹,之后它显示了50个不同的提交被修改.但它没有让我推动那些代码.当我试图推它时,它说,Branch up to date但显示50个提交被修改了一个git status.其他两种方法也没有帮助.

现在即使它显示它摆脱了该文件夹的历史记录,当我在我的localhost上检查该repo的大小时,它仍然是大约6MB.(我也删除了refs/original文件夹,但没有看到repo大小的变化).

我要澄清的是,如果有一种方法可以摆脱提交历史(这是我认为发生的唯一事情),而且那些文件git保持假设一个人想要回滚.

让我们说一个解决方案是为此而呈现并应用于我的localhost但不能复制到该GitHub仓库,是否有可能克隆该repo,回滚到第一个提交执行技巧并推送它(或者这是否意味着git将仍然有所有这些提交的历史? - 又名.6MB).

我的最终目标是基本上找到从git中删除文件夹内容的最佳方法,这样用户就不必下载6MB的东西,仍然可能有其他提交从未触及过模块文件夹(那很漂亮)他们中的所有人都在git的历史中.

我怎样才能做到这一点?

git github rebase git-rebase

284
推荐指数
7
解决办法
9万
查看次数

Git - nullSha1:包含指向 null sha1 的条目

我正在尝试部署应用程序,但收到错误。以下研究指出了我这里:

warning in tree f148931b374ad1aa9748b8f91bd48fcb44fb73b0: nullSha1: contains entries pointing to null sha1
Checking object directories: 100% (256/256), done.
broken link from    tree f148931b374ad1aa9748b8f91bd48fcb44fb73b0
              to    blob 0000000000000000000000000000000000000000
missing blob 0000000000000000000000000000000000000000 
Run Code Online (Sandbox Code Playgroud)

尝试了这里的解决方案,但命令在终端上没有执行任何操作,它们只是坐在那里。

有人可以帮助我吗?

git

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

如何修复损坏的git存储库 - "git fsck"报告"树中的警告[hash]:包含指向null sha1的条目"

概述:

我无法成功将我们的仓库中的更改提取到生产服务器.

在我的repo上运行"git fsck"返回了同样错误的5个实例:

warning in tree [hash]: contains entries pointing to a null sha1
Run Code Online (Sandbox Code Playgroud)

我们的所有版本的repo都存在错误,包括bitbucket上托管的版本.

我和我的同事在我们非常希望保留的本地版本的回购中都有未经删除和未提交的更改.

我已经尝试了google,stackoverflow和man page,但是我找不到一个好的指南来解释发生了什么或如何解决问题.

在谈到GIT时,我的同事和我是相对的新手.我们已经掌握了基础知识,但我们还没有在低级命令中花费任何时间.

我很感激任何和所有帮助恢复我的回购的完整性.

详细说明:

当我尝试将远程分支拉到生产服务器时,我的问题就出现了.它应该是对工作目录的简单更新,但我得到一些模糊的错误,我不记得,发现我的工作目录已损坏.

合并失败后,Git状态报告了大量未跟踪和修改的文件.我无法弄清楚如何使用git命令解决问题所以我手动操作文件系统以删除文件(但我没有触及.git目录中的任何内容)并让我的工作目录回到我的状态生产服务器将无误地为我的网站服务.

在我的repo上运行"git fsck"返回了同样错误的5个实例:

warning in tree [hash]: contains entries pointing to a null sha1
Run Code Online (Sandbox Code Playgroud)

我跑了git fsck:

  • 我的开发机器上的回购
  • 我的同事的开发机器
  • dev和prod上来自bitbucket的新克隆版本回购

我试过的一切都显示出相同的警告.所以无论问题是什么,它都在我们的回购的所有版本中.

调用"git ls-tree [树形哈希报告错误]"显示正常的目录打印输出以及坏树哈希:

160000 commit 0000000000000000000000000000000000000000 [name of repo]
Run Code Online (Sandbox Code Playgroud)

我找到的最接近解决方案的是这个stackoverflow帖子:如何在Git树中删除带有null sha1的条目.但是,我无法真正理解这些步骤,切割和粘贴命令无法解决我的问题.

我的问题:

  • 这些错误究竟意味着什么?他们有多严重?
  • 我们如何修复我们的回购(如果可能的话,请一步一步地为我们的新手)?
  • 在我们修复之前或之后,我们是否应该承诺并将所有更改推送到回购?
  • 修复回购有什么影响?我们如何将修复分发到所有版本的repo(例如dev机器和生产服务器)?
  • 导致此错误的原因是什么?我们如何防止它再次发生?

git git-fsck

5
推荐指数
1
解决办法
986
查看次数

标签 统计

git ×3

git-fsck ×1

git-rebase ×1

github ×1

rebase ×1