【问题标题】:Use git "log" command in another folder在另一个文件夹中使用 git "log" 命令
【发布时间】:2018-01-12 05:38:26
【问题描述】:

我在文件夹 A(这是一个 git 项目)中有一些 php 文件。在这些 php 文件中,我想执行“git log”,但对于文件夹 B。文件夹 B 是另一个 git 项目(因此 A 和 B 之间的日志不同)。

我如何使用 shell 命令来做到这一点?

【问题讨论】:

  • cd /other/dir && git log && cd - 在 bash shell 中?
  • 使用 git 1.8.5(2013 年第四季度),您将有另一种选择,而不是设置 --git-dir:请参阅 my answer below
  • (cd ../other/dir && git log) - 只是用圆括号括起来,这会运行一个新的子shell,所以返回后你最终会回到原来的位置。

标签: git


【解决方案1】:

发件人,man git

您可以在传递任何命令之前使用--git-dir 参数执行此操作。

git --git-dir /foo/bar/.git log

(必须指定.git 目录。)来自documentation

--git-dir=<path>

设置存储库的路径。这也可以通过设置GIT_DIR 环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。

【讨论】:

  • 您必须引用.git 目录。试试git --git-dir=/foo/bar/.git log
  • 对不起,我错了,你没有把 = 放在 --git-dir 和目录名之间。所以它变成了 git --git-dir /foo/bar log
  • 警告!对于log 以外的操作,此方法已失效。试试git --git-dir /foo/someclone/.git status - git 完全糊涂了。我推荐-C,如下所述。
  • 我还没有遇到包含字符串“--git-dir”的git帮助页面:'(
  • @thinsoldier man git 在我的系统(2.3.5)上运行。但是@VonC 的回答效果更好。
【解决方案2】:

使用git 1.8.5 (Q4 2013),您将有另一个选择,而不是设置--git-dir
如果要在文件夹B 中执行git log,请键入:

git -C B log

就像“make -C <directory>”一样,git -C <directory> ...”告诉 Git 在做任何其他事情之前先去那里


请参阅 Nazri Ramliycommit 44e1e4

在不离开当前目录的情况下,在不同的目录中调用 git 命令需要更多的按键:

  1. (cd ~/foo && git status)
    git --git-dir=~/foo/.git --work-tree=~/foo status
    GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)
  3. for d in d1 d2 d3; do (cd $d && git svn rebase); done

上面显示的方法对于脚本来说是可以接受的,但对于快速命令行调用来说太麻烦了。

使用这个新选项,可以用更少的按键完成上述操作:

  1. git -C ~/foo status
  2. git -C ../.. grep foo
  3. for d in d1 d2 d3; do git -C $d svn rebase; done

【讨论】:

  • 这是一种更可靠的方法,适用于log以外的命令。
  • 哇,手册页中什么也没有!多可惜。 (好的,现在我看到它已添加到 2.7 手册页中)
  • 遗憾的是,这仍然不如 Mercurial 的 -R 选项好,因为它会混淆相对路径。例如,如果我输入 git -C subdir log subdir/myfile 它会给出错误(因为它会查找文件 subdir/subdir/myfile)。
  • @jwd:我不确定这是怎么回事?你引用的是我所期望的精确行为,我不希望git 认为它比我和我输入的更聪明。如果我说“在目录 X 中运行它”,我的意思不是“除了有时,做其他事情”。
  • @JacksonBlankenship -c 不正确(用于设置配置); -C 会(它改变路径)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 2019-08-12
  • 2020-12-09
  • 2011-01-05
  • 2016-12-30
  • 1970-01-01
相关资源
最近更新 更多