相关疑难解决方法(0)

Git标记为存储库的子文件夹

我使用Git导入SVN存储库.然后我创建了自己的项目作为存储库中的子文件夹.

我使用带有Git-SVN的SVN存储库.我的工作程序是:

  1. git commit -am "message"
  2. git svn rebase
  3. git svn dcommit.

现在我想标记我的项目git tag -a RC1 -m 'Release Candidate 1',但我只希望我的项目获得标记.

我怎样才能做到这一点?

svn git git-svn git-tag

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

找到源从git分支的位置

我有一个git存储库(包含或多或少的项目历史记录)和单独的源代码(只是一个包含少量文件的tarball),它们已经分了一段时间(实际上在2004年或2005年的某个地方).

tarball的来源经历了很多变化,我想从中加入一些变化.现在的问题是 - 如何找出变化的源的实际分支点,以获得最小的差异.

所以我基本上想要的是在git历史中找到位置,其中代码与我拥有的源代码的tarball最相似.我不想手动这样做.

还值得一提的是,更改的源仅包含文件子集,并将一些文件拆分为更多.然而,那里的代码似乎只得到了很小的修改和几个补充.

如果你想自己玩这个,有源的tarball就在这里,Git在Gitorious托管:git://gitorious.org/gammu/mainline.git

git diff search branching-and-merging

8
推荐指数
1
解决办法
616
查看次数

如何从git repo中删除blob

我不小心在我的仓库中添加了一个数据库转储(超过1 GB),推了几天后注意到了这一点.我使用git filter-branch删除文件,过期的reflog并运行git gc来修剪未使用的对象,但数据库转储blob仍在repo中.我用过 哪个提交有这个blob?,但确实发现任何提交有blob的提交.如何删除这个或如何找出它在git gc期间没有被删除的原因?

git version-control

8
推荐指数
1
解决办法
6023
查看次数

如何修复git missing blob?

因为我一直在各个地方之间使用我的git repo,我现在陷入了一个破碎的git repo.当我这样做时,git log我得到了正确的历史,但是当我这样做时,git status我得到了

fatal: unable to read 563e4c9abcd4114e08255db989f0f53426bdeff7
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我试过git fsck:

Checking object directories: 100% (256/256), done.
missing blob 33244941016301570dccdcdc95e543910109d0a8
dangling blob 59f44441e6437ebc4d40182eb8a10d3e07fe367b
missing blob 5dc8ab1804acb58fc658bcd6152fbb246290c8ae
dangling blob 698c775f2599fad3d09906dead4dc67743a984bd
dangling blob 922003b8433bcad6ce9778a37628d738faa26389
dangling blob c33c0528bfee55b04d99de4580da49de4413329b
dangling blob e5107c118bde0edbe5dfb994cb6a50d235c3f06b
dangling blob 437573e539572454cb868ca5a0f5074b96d777ac
missing blob 468d1856336eaa1ce8006f38ce779c0d997c8d48
dangling blob 6fc9c88708d7d5ca455e68781472bdea119997eb
dangling blob 7225d0147fa566369ba3024324b527a7adeac094
dangling blob bb8125d15579fcf37925f09cd1883b15272f9f0d
missing blob c8095f49253ac3787a6f86943160eda2c78a6a28
dangling blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
dangling blob 0bdaed084e15add987ef86fe84f435d085475995
dangling blob 36ee13c9b334da090ea6b194606df8a2852b3b3a
missing blob 563e4c9abcd4114e08255db989f0f53426bdeff7   <= the one which results …
Run Code Online (Sandbox Code Playgroud)

git blob corrupt corruption git-branch

8
推荐指数
1
解决办法
6083
查看次数

订购git-rev-list

git-rev-list如何命令它返回的提交?

我主要是指在开发的并发分支上进入的提交,然后合并到主分支.似乎没有按照日期对提交进行排序,这是有道理的,因为提交可以在过去或将来的不同时间挑选.

例如,这里有一些历史git-log......

*   Sat, 25 Aug 2012 11:37:23 -0700 8238401
|\  
| * Thu, 23 Aug 2012 12:29:09 -0700 c9de861
* |   Fri, 24 Aug 2012 16:29:01 -0700 b7e8827
|\ \  
| * | Mon, 14 May 2012 20:46:30 +0200 0a1db74
| * | Mon, 14 May 2012 17:54:25 +0200 e03e71d
| * | Fri, 13 Jul 2012 12:01:11 +0200 bffa852
* | |   Fri, 24 Aug 2012 15:45:13 -0700 09fad50
|\ \ \  
| * | …
Run Code Online (Sandbox Code Playgroud)

git git-rev-list

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

如何根据blob/tree hash发现最后一次相关提交?

如果我ls-tree是某棵树并获得blob和树的列表,我怎样才能发现与这些blob和树相关的最后一次提交?我正在寻找这样的东西:

$ git ls-tree HEAD
...
100644 blob  734713bc047d87bf7eac9674765ae793478c50d3   myfile
...
$ git show --commit 734713bc047d87bf7eac9674765ae793478c50d3
commit 734713bc047d87bf7eac9674765ae793478c50d3
Author: Scott Chacon <schacon@gmail.com>
Date:   Fri Jan 2 18:32:33 2009 -0800

    fixed refs handling, added gc auto, updated tests
Run Code Online (Sandbox Code Playgroud)

git

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

查找补丁程序适用的第一个或最后一个提交

假设补丁是从过去的特定提交创建的,并且不再适用于HEAD。

我如何找到HEAD历史记录中的第一个提交或更好的最后一个提交,在此补丁中加上“ git apply”?也许有git bisect吗?但是哪个命令会告诉我是否有补丁?

理想情况下,除非有冲突,否则我想返回到该提交,应用补丁,然后基于原始HEAD或与之合并,然后再次进行比较以创建新补丁。在此之后,我想回到原始的HEAD,以便可以继续安装更多补丁。

背景:有许多补丁需要重新发布...(是的,在某些生态系统中,补丁仍然很重要。)

git patch git-bisect git-patch git-apply

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

哪个 git commit/branch 包含这个 blob?

我正在使用此脚本来计算存储库中的 n 个最大的 blops:

https://stubbisms.wordpress.com/2009/07/10/git-script-to-show-largest-pack-objects-and-trim-your-waist-line/

输出示例:

54016,13273,0ef462bf57e8c036b00b52d6cc0fd91b2fc2a827 Data/Db.MDF
30976,8734,3e162c8313995980c8d6fc434c06789373364a47 Tools/connector.dll
Run Code Online (Sandbox Code Playgroud)

上面的两个 SHA 是 blob 的 SHA。现在我想找到包含这些斑点的提交/分支。我首先尝试:

$ git branch -a --contains 3e162c8313995980c8d6fc434c06789373364a47
error: object 3e162c8313995980c8d6fc434c06789373364a47 is a blob, not a commit
Run Code Online (Sandbox Code Playgroud)

正如上面的消息所述,SHA 适用于 blob,而不是提交。这让我想到:哪个提交有这个 blob?

我已经从上面的帖子创建了两个脚本,并将它们添加到我的存储库的根目录中。但是当我运行它们时,没有任何输出:

MINGW64 /c/tmp/MyRepo (master)
$ ./blop-to-commit.sh 3e162c8313995980c8d6fc434c06789373364a47

MINGW64 /c/tmp/MyRepo (master)
Run Code Online (Sandbox Code Playgroud)

还尝试在存储库的本地裸克隆上运行它:

MINGW64 /c/tmp/MyRepo.bare (BARE:master)
$ ./blop-to-commit.sh 3e162c8313995980c8d6fc434c06789373364a47

MINGW64 /c/tmp/MyRepo.bare (BARE:master)
Run Code Online (Sandbox Code Playgroud)

有什么想法为什么我在历史上的某个时刻没有得到包含该错误的提交/分支?

编辑/解决方案:

似乎我只需将 --all 选项添加到 git log 命令:

shift
git log --all "$@" --pretty=format:'%T %h %s' \
| while read tree commit subject ; …
Run Code Online (Sandbox Code Playgroud)

git

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

如何通过文件哈希从git存储库查找文件修订或提交?

我有一个git diff输出,其中包含这样的行:index 0056c73..92c6cbd 100644每个文件。我知道它来自哪个存储库,但是不幸的是不知道针对哪个版本的存储库

如何找到差异所针对的存储库的提交?

或者,如何找到diff中的映像前哈希对应的每个文件的确切提交?(即,0056c73在上面的示例中,哪个版本的文件具有哈希值)

git hash

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

通过 git 存储库中相应的 blob 哈希值查找文件?

假设我有一个文件可能已经在 git 存储库中,并且它可能驻留在多个路径名下,甚至在同一个提交中。

如何查找包含带有与该文件对应的哈希值的 blob 的所有提交,并列出这些提交以及每个文件所在的路径名?

是否有一种按哈希查找文件的技术也可以搜索索引和工作目录?

git

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

如何找到具有已知哈希值的对象的 git 对象 ID

我正在使用bfg来清理我的 git repo。为了获取要删除的大文件列表,我使用了这个脚本。但是对于某些文件,我只想从 repo 中删除它们的特定版本。

bfg 可以选择“使用指定的 Git 对象 ID 去除 blob”。当我运行上面的脚本时,我得到了列表中每个对象的哈希值。鉴于该散列,我如何找出该特定对象的 git 对象 ID,以便我可以使用 bfg 删除它?

git bfg-repo-cleaner

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