【问题标题】:gitk cannot find a GIT repositorygitk 找不到 GIT 存储库
【发布时间】:2012-08-11 14:51:09
【问题描述】:

当我运行gitk 时,会弹出一个 Tk 窗口,提示“它在此处找不到 GIT 存储库”。
我错过了什么?这些是我遵循的步骤。如果我错过了一些愚蠢的事情,请原谅我。

[~/TEMP]$ ls
[~/TEMP]$ git init abc
Initialized empty Git repository in /*******/home/jganhotra/TEMP/abc/.git/

添加了一个文件

[~/TEMP]$ cd abc/
[~/TEMP]$ ls -la
total 16
drwxr-x---  3 jganhotra eng 4096 Aug 15 16:05 ./
drwxr-x---  3 jganhotra eng 4096 Aug 15 16:04 ../
drwxr-x---  8 jganhotra eng 4096 Aug 15 16:05 .git/
[abc]$ touch a.txt
[abc]$ gvim a.txt 
[abc]$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       a.txt
nothing added to commit but untracked files present (use "git add" to track)
[abc]$ git add .
[abc]$ git commit -m "Added file"
[master (root-commit) 1ff1051] Added file
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

提交

[abc]$ git status
# On branch master
nothing to commit (working directory clean)
[abc]$ git log
commit 1ff1051370dfb69a0e85a60f322da7389366db8b
Author: Jatin Kumar Ganhotra <jganhotra@******.com>
Date:   Mon Aug 13 19:10:38 2012 +0530

    Added file

[abc]$ gitk
[abc]$ which gitk
gitk:    aliased to /*******/tools/install/git-tools/git-1.7.11.2/bin/gitk

[abc]$ ls -la /******/tools/install/git-tools/git-1.7.11.2/bin/gitk
-rwxr-x---  1 devadmin eng 329597 Jul 17 17:43 /*******/tools/install/git-tools/git-1.7.11.2/bin/gitk

这应该有效。我错过了什么?我相信还有一些依赖。

【问题讨论】:

  • 请将ls -laabc/目录下的输出添加到帖子中。
  • 我添加了ls -la 输出。是的,我知道 .git 目录及其作用。它就在那里。
  • 我猜我没有安装 gitk 需要的一些内部依赖项。
  • 也许它以非特权用户身份运行?对 gitk 文件执行 ls -la。
  • 从路径结构我猜你使用 Linux 作为你的操作系统。您安装了哪些 Git 软件包,例如通过apt-get,或者你是从源代码编译的?

标签: git gitk


【解决方案1】:

嗯。首先,这里唯一实际正确的答案是,使用你的包管理器,你的问题就会消失。

但我会解释我为什么这么说。你的包管理器会将 git 文件放到你所有登录和 shell 会话的 $PATH 中的位置。

我看到你已经安装了 git,它是从源代码手动编译的,位于一个名为 /******/tools/install/git-tools/git-1.7.11.2/ 的创造性组合路径中。我认为正在发生的事情是这样的:您要么仅在此登录/shell 会话中将 git 二进制文件添加到 $PATH,要么在 bash 配置文件中为它们添加别名。

这会导致您看到的错误。 Reading the source of gitk,可以看到错误发生在这里:

if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
show_error {} . [mc "Cannot find a git repository here."]
exit 1
}

所以,gitk 使用 git 二进制文件来检查那里是否有 git repo。但是 gitk 找不到 git 二进制文件,因为它不会访问您的 shell 别名或您可能在某个临时登录/shell 会话中的某处对 $PATH 所做的任何临时更改。

所以请使用您的包管理器。 :) 或者修复你的路径,如果你坚持使用手动 git。

【讨论】:

  • 我没有将二进制文件添加到$PATH,而是在 bash 配置文件中创建了别名。从没想过会有所作为,直到现在。非常感谢。
  • 由于现在我的 git 二进制路径不在 $PATH 中,gitk 找不到 git,因此出现此错误。所以,一旦我添加了二进制文件路径,错误就会正确。
  • 我要再次强调,正确的答案是使用包管理器。但是,如果您坚持不这样做,则可以,确保 gitk 程序可以找到 git 可执行文件是解决方案。但是,这是否会导致 gitk 按预期运行我不能说,因为我不知道您的 git 安装可能还有什么其他问题。 :) 使用包管理器,世界和平取决于它。 :)
  • 您是否建议在集中式环境中使用包管理器。我认为一段时间后,包管理器复制文件的常见位置会变得过于拥挤和混乱。您对此有何看法?
  • 我不知道你所说的“集中式环境”是什么意思,但使用包管理器总是比手动滚动软件更好。在一个位置(例如 /usr/bin)中存在许多可执行文件绝对不是问题。
【解决方案2】:

确保/tmp 是可写的。

这是我收到此错误时的问题。

【讨论】:

    【解决方案3】:

    当 /tmp 文件系统已满时,我会看到同样的问题。

    【讨论】:

      【解决方案4】:

      在您的 Git 存储库中简单地运行:

      $ git-init 
      

      gitk 现在会看到你的 git 目录。

      更多信息请查看git-init man page

      【讨论】:

      • 如果这确实解决了问题,那么该目录一开始就不是 git repo。显然,询问的人实际上在那里有一个回购。更糟糕的是,对于旧版本的 git,git init 不会提供任何警告。这意味着git init清除存储库本地副本中的所有历史记录有人需要阅读那个手册页,我敢说这不是那个人问的。
      猜你喜欢
      • 1970-01-01
      • 2016-10-15
      • 2018-12-09
      • 2022-10-23
      • 1970-01-01
      • 2020-06-28
      • 2021-02-27
      • 2015-05-26
      • 2017-11-15
      相关资源
      最近更新 更多