相关疑难解决方法(0)

如何克隆仅Git存储库的子目录?

我有我的Git存储库,它在根目录下有两个子目录:

/finisht
/static
Run Code Online (Sandbox Code Playgroud)

当这是在SVN,/finisht在一个地方签出,而/static在其他地方查出来,像这样:

svn co svn+ssh://admin@domain.com/home/admin/repos/finisht/static static
Run Code Online (Sandbox Code Playgroud)

有没有办法用Git做到这一点?

git repository git-clone subdirectory sparse-checkout

1298
推荐指数
18
解决办法
73万
查看次数

git如何计算文件哈希值?

存储在树对象git ls-tree中的SHA1哈希值(由返回的sha1sum)与文件内容的SHA1哈希值不匹配(由返回)

$ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum
de20247992af0f949ae8df4fa9a37e4a03d7063e  -
Run Code Online (Sandbox Code Playgroud)

git如何计算文件哈希值?它是否在计算哈希值之前压缩内容?

git hash checksum sha1 git-hash

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

如何使用命令行工具进行DEFLATE来提取git对象?

我正在寻找DEFLATE算法的命令行包装器.

我有一个使用DEFLATE压缩的文件(git blob),我想解压缩它.gzip命令似乎没有直接使用DEFLATE算法的选项,而不是gzip格式.

理想情况下,我正在寻找可以做到这一点的标准Unix/Linux工具.

编辑:这是我尝试使用gzip解决我的问题时得到的输出:

$ cat .git/objects/c0/fb67ab3fda7909000da003f4b2ce50a53f43e7 | gunzip

gzip: stdin: not in gzip format
Run Code Online (Sandbox Code Playgroud)

git blob deflate

75
推荐指数
12
解决办法
5万
查看次数

如何计算git哈希?

我试图理解git如何计算refs的哈希值.

$ git ls-remote https://github.com/git/git  

....
29932f3915935d773dc8d52c292cadd81c81071d    refs/tags/v2.4.2
9eabf5b536662000f79978c4d1b6e4eff5c8d785    refs/tags/v2.4.2^{}
....
Run Code Online (Sandbox Code Playgroud)

在本地克隆回购.refs/tags/v2.4.2^{}通过sha 检查ref

$ git cat-file -p 9eabf5b536662000f79978c4d1b6e4eff5c8d785 

tree 655a20f99af32926cbf6d8fab092506ddd70e49c
parent df08eb357dd7f432c3dcbe0ef4b3212a38b4aeff
author Junio C Hamano <gitster@pobox.com> 1432673399 -0700
committer Junio C Hamano <gitster@pobox.com> 1432673399 -0700

Git 2.4.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Run Code Online (Sandbox Code Playgroud)

复制解压缩的内容,以便我们可以散列它.(AFAIK git在散列时使用未压缩的版本)

git cat-file -p 9eabf5b536662000f79978c4d1b6e4eff5c8d785 > fi
Run Code Online (Sandbox Code Playgroud)

让我们使用git自己的哈希命令对内容进行SHA-1

git hash-object fi
3cf741bbdbcdeed65e5371912742e854a035e665
Run Code Online (Sandbox Code Playgroud)

为什么输出不是[9e]abf5b536662000f79978c4d1b6e4eff5c8d785?我理解前两个字符(9e)是十六进制的长度.我该如何散列内容fi以便我可以获得git ref abf5b536662000f79978c4d1b6e4eff5c8d785

git hash

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

如何计算目录的git hash-object?

有没有人有一个在目录上使用git hash-object的例子?它在文件上很容易工作*但是不能像我期望的那样工作**

*:  git hash-object c:\somefile.txt
**: git hash-object -t tree c:\somedirectory
Run Code Online (Sandbox Code Playgroud)

当我尝试在目录中使用hash-object时,它会抱怨"致命:无法打开'C:\ someDirectory':权限被拒绝"

git

15
推荐指数
3
解决办法
8144
查看次数

git commit对象的文件格式是什么?

上下文:我希望能够通过我的git提交消息和提交进行搜索而无需经历令人费解的复杂git grep命令,因此我决定看看如何存储git commit消息.

我看了一下.git文件夹,它看起来像是存储的提交

.git/objects 
Run Code Online (Sandbox Code Playgroud)

.git对象文件夹包含一堆名称为a6和9b的文件夹.这些文件夹中的每个文件夹都包含一个名称类似于提交的文件2f29598814b07fea915514cfc4d05129967bf7.当我在文本编辑器中打开其中一个文件时,我会感到胡言乱语.

  1. 什么文件格式是这个乱码/如何存储git提交对象?
  2. 在这个git commit日志中,文件夹9b包含一个commit sha

    aed8a9f773efb2f498f19c31f8603b6cb2a4bc
    
    Run Code Online (Sandbox Code Playgroud)

    为什么,并且是否存在多个提交sha将存储在文件9b中的情况?

  3. 有没有办法将这个乱码转换成纯文本,以便我可以在文本编辑器中混淆提交?

git

11
推荐指数
3
解决办法
7473
查看次数

Git/GitKraken – 从备份恢复 repo 后,文件模式更改为未知值 (14001)

Git(Kraken)仍然是新手。如果我的逻辑板坏了,不得不从备份中恢复存储库,重新安装软件,然后重新启动并在临时机器上运行,直到我可以从商店取回原件。

现在我在 Gitkraken 中打开了 repo,这告诉我我的修补程序分支上有 2,224 个文件更改——显然所有文件。如果我单击其中任何一个,“差异视图”面板将显示消息“文件模式从 217 更改为 14001”和“文件内容不变”。

我能够在文件 permissions.com 上翻译 217 八进制值,但没有找到 14001。

我不是文件权限方面的专家,但 217(大概是我之前机器上的默认设置,因为我不记得更改它)似乎不太理想,只有用户的写访问权限,组的执行访问权限,以及其他的完全访问权限。

谁能告诉我这个 14001 设置是关于什么的(这是一个全新的 MacBook Pro,与正在修复的 2015 型号相比)?这个设置是否比 217 更可取(它几乎必须是......?)?哪些设置适合静态网站文件,推送这些文件模式更改是好/坏/中立?

git permissions chmod octal gitkraken

8
推荐指数
2
解决办法
2723
查看次数

如何解压缩单个git对象?

回答关于Git的树对象的内部格式问题,获取对存储在包的一个特定的树对象,我用解压所有的对象在存储库的打包文件git unpack-objects.这似乎有点矫枉过正.是的,我知道这样的命令git show --raw,git ls-treegit cat-file将获得接近的内部格式.

如何使git的输出在其内部格式的单个对象-完整的blob,tree,commit,或tag头-无论它是否存储在松动或压缩格式?

git

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

Git如何存储树对象?

我试图理解git如何存储树对象的确切格式.如何计算树对象的哈希值?

git

5
推荐指数
2
解决办法
1204
查看次数

如何打印存储在 .git 文件夹中的 Git 对象的内容?

以下命令不会产生相同的输出:

cat .git/objects/96/d0745960850e8ac97406311f3288b6d035cefc
git show --raw 96d0745960850e8ac97406311f3288b6d035cefc
Run Code Online (Sandbox Code Playgroud)

我已经尝试了各种选项git showgit cat-file,但我似乎无法让事情匹配。我觉得应该以某种方式支持这一点。

具体来说,我想要文档格式。也就是说,我希望看到标题、空字节等。

如果我运行:

cat .git/objects/96/d0745960850e8ac97406311f3288b6d035cefc | zlib-deflate | hexdump
Run Code Online (Sandbox Code Playgroud)

我看到该行开头为:

0000000 62 6c 6f 62
Run Code Online (Sandbox Code Playgroud)

正如我所期望的那样,它对应于“b”“l”“o”“b”。

如果你好奇,我的zlib-deflate脚本的内容是:

#!/usr/bin/env python

# Deflates a stream of bytes compressed via zlib that are passed to stdin.

import io
import sys
import zlib

# /sf/ask/424562141/
reader = io.open(sys.stdin.fileno(), mode='rb', closefd=False)
data = reader.read()
print zlib.decompress(data)
Run Code Online (Sandbox Code Playgroud)

git

5
推荐指数
0
解决办法
780
查看次数

git中的树哈希存储在哪里?

我正在关注本教程(https://jwiegley.github.io/git-from-the-bottom-up/1-Repository/3-blobs-are-stored-in-trees.html)了解git体系结构。

命令

$ git cat-file commit HEAD
Run Code Online (Sandbox Code Playgroud)

给我哈希表引用的树的哈希值,“ 0563f77d884e4f79ce95117e2d686d7d6e282887”。现在,我尝试在中找到此哈希.git

$ find .git/ | xargs grep "0563f77"
Run Code Online (Sandbox Code Playgroud)

为什么什么都没出现?这个哈希值不存储在任何地方吗?

git hash

5
推荐指数
2
解决办法
1199
查看次数