Git Add有一个verbose开关吗

j2cgzkjk  于 2023-04-19  发布在  Git
关注(0)|答案(5)|浏览(259)

我正在将我所有的私有和公共仓库转移到github上。我做的一个决定是只使用控制台,因为如果我需要更换PC等,这意味着更小的工具占用空间。
我是一个控制台应用程序的大用户,并且是git的新手,我决定购买Tekpub的Mastering Git系列,因为它向您展示了如何将git bash集成为工具栏。
一切正常,除了add all命令:

git add .

它似乎是工作,但我没有得到任何指示,它的工作或不.是否有一个详细的开关(我认为这是它会被称为),会说什么文件被跟踪后,该命令被启动?
我正在使用Visual Studio 2010和标准安装的git(不是Git扩展)

flvtvl50

flvtvl501#

我在调试git的一个问题,需要一些非常详细的输出来找出问题所在。我最终设置了GIT_TRACE环境变量:

export GIT_TRACE=1
git add *.txt

您也可以在同一行中使用它们:

GIT_TRACE=1 git add *.txt

输出:

14:06:05.508517 git.c:415               trace: built-in: git add test.txt test2.txt
14:06:05.544890 git.c:415               trace: built-in: git config --get oh-my-zsh.hide-dirty
mklgxw1f

mklgxw1f2#

您可以使用git add -i来获得git add的交互式版本,尽管这并不是您所追求的。最简单的方法是,在git add艾德之后,使用git status来查看哪些是暂存的。
除非是第一次提交,否则不建议使用git add .。通常最好明确列出要暂存的文件,这样就不会意外地跟踪不需要的文件(临时文件等)。

cgh8pdjw

cgh8pdjw3#

Git不仅有一个GIT_TRACE2标志(since Git 2.25,2019年第二季度),而且现在跟踪甚至可以告诉你哪个父进程称为Git。
在Git 2.34(2021年第4季度)中,trace 2日志学会了显示父进程名称,以查看Git在什么上下文中被调用。
这在IDE调用Git时很有用。
参见commit 2f732bfcommit b7e6a41(2021年7月21日)by Emily Shaffer ( nasamuffin )
(由Junio C Hamano -- gitster --合并至commit 6f64eea,2021年8月24日)

tr2:记录父进程名

签署人:艾米丽·谢弗
告诉谁调用了Git是很有用的-是用户通过CLI或脚本手动调用的吗?还是IDE?在某些情况下-比如'repo'工具-我们可以影响源代码并从调用者进程设置GIT_TRACE2_PARENT_SID环境变量。
在'repo'的例子中,父SID被操作为包含字符串“repo”,这意味着我们可以肯定地识别'repo'工具何时调用Git。
然而,以这种方式识别父项需要我们知道哪些工具调用了Git,并且我们有能力修改这些工具的源代码。
它不能扩展以跟上使用Git的各种IDE和 Package 器,其中大多数我们都不知道。
了解哪些工具和 Package 器调用Git,以及如何调用,将给予我们了解如何提高Git的可用性和性能。
不幸的是,没有跨平台的可靠方法来收集父进程的名称。
如果procfs存在,我们可以使用它;否则我们就需要用另一种方式来发现这个名字。
但是,进程ID应该足以在大多数平台上查找进程名称,以便代码可以共享。
Git for Windows收集类似的信息并将其记录为"data_json"事件。
但是,由于"data_json"具有可变格式,因此在某些语言中很难进行有效解析;相反,让我们使用一个专用的"cmd_ancestry"事件来记录有关当前进程的祖先的信息,并使用一种一致的、可解析的方式。
Git for Windows还会收集多代父代的信息。
在Linux中,可以使用procfs收集更多的祖先信息,但这样做很麻烦。
为了以后将Git for Windows的祖先日志转移到'cmd_ancestry'事件,以及为了以后将更多的祖先添加到Linux实现中-或者将此功能添加到其他更容易遍历进程树的平台-让'cmd_ancestry'接受一个父级数组。
technical/api-trace2现在在其手册页中包括:

"cmd_ancestry"

此事件包含当前进程的父进程(以及父进程的早期代)的文本命令名,按从最近的父进程到最远的曾祖父进程的顺序排列。它可能无法在所有平台上实现。

{
"event":"cmd_ancestry",
...
"ancestry":["bash","tmux: server","systemd"]
}

在Git 2.34(2021年第四季度)中,对进程祖先信息的跟踪得到了增强。
参见commit 2d3491bcommit 326460acommit 6eccfc3commit 48f6871commit f2cc888commit 7d9c80f(2021年8月27日)by Ævar Arnfjörð Bjarmason ( avar )
(由Junio C Hamano -- gitster --合并于commit 76f5fdc,2021年9月20日)

tr2tr2:Linux上的log N父进程名称

签署人:埃瓦尔·阿恩菲约德·比亚马逊
作者:Taylor Blau
2f732bf(“tr2:log parent process name”,2021-07-21,Git v2.34.0 --merge我们开始记录父进程名称,但在Windows上只记录所有父进程。在Linux上只记录直接父进程的名称。
扩展添加的功能,以便在Linux上也记录完整的父链。
在Git 2.38(2022年第3季度)中,详细跟踪输出已得到增强,以包括有关配置变量的输出。
参见commit 35ae40ecommit 050d0dc(2022年8月12日)by Teng Long ( dyrone )
(由Junio C Hamano -- gitster --合并至commit 10ccb50,2022年8月29日)

api-trace2.txt:打印配置键值对

签署人:腾龙
通过设置“GIT_TRACE2_CONFIG_PARAMS”环境变量和“trace2.configparam”配置,支持将“有趣”的配置键值对打印到tr 2日志中。
technical/api-trace2现在在其手册页中包括:

Config (def param) Events

将“感兴趣的”配置值转储到trace 2日志。
我们可以选择发出配置事件,有关如何启用它,请参阅git config中的trace2.configparams

$ git config color.ui auto

然后,将配置color.ui标记为“interesting”配置,并使用
GIT_TRACE2_CONFIG_PARAMS

$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ export GIT_TRACE2_CONFIG_PARAMS=color.ui
$ git version
...
$ cat ~/log.perf
d0 | main                     | version      |     |           |           |              | ...
d0 | main                     | start        |     |  0.001642 |           |              | /usr/local/bin/git version
d0 | main                     | cmd_name     |     |           |           |              | version (version)
d0 | main                     | def_param    |     |           |           |              | color.ui:auto
d0 | main                     | data         | r0  |  0.002100 |  0.002100 | fsync        | fsync/writeout-only:0
d0 | main                     | data         | r0  |  0.002126 |  0.002126 | fsync        | fsync/hardware-flush:0
d0 | main                     | exit         |     |  0.002142 |           |              | code:0
d0 | main                     | atexit       |     |  0.002161 |           |              | code:0

您可以将其与其他运行时trace 2事件组合:

tr2:除了键-值对之外,无条件地显示范围

签署人:腾龙
当我们指定GIT_TRACE2_CONFIG_PARAMStrace2.configparams时,trace 2将打印“有趣的”配置值到日志。
有时,当在多个作用域文件中设置配置时,输出如下所示(此处省略不相关的字段作为“...”):

...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false ...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false ...`|` `def_param`    `|`  ...  
`|` core.multipackindex:false

正如日志所示,即使不同作用域中的每个配置都被转储,但我们不知道它来自哪个 * 作用域 *。
因此,最好也添加作用域名称,以使它们更易于识别。
作为轨迹组合的示例:
例如,当执行时:

$ GIT_TRACE2_PERF=1 \
  GIT_TRACE2_CONFIG_PARAMS=core.multipackIndex \
  git rev-list --test-bitmap HEAD"

以下是输出(此处省略不相关的字段作为“...”):

Format normal:
... git.c:461 ... def_param scope:system core.multipackindex=false
... git.c:461 ... def_param scope:global core.multipackindex=false
... git.c:461 ... def_param scope:local core.multipackindex=false

Format perf:

... | def_param    | ... | scope:system | core.multipackindex:false
... | def_param    | ... | scope:global | core.multipackindex:false
... | def_param    | ... | scope:local  | core.multipackindex:false

Format event:

{"event":"def_param", ... ,"scope":"system","param":"core.multipackindex","value":"false"}
{"event":"def_param", ... ,"scope":"global","param":"core.multipackindex","value":"false"}
{"event":"def_param", ... ,"scope":"local","param":"core.multipackindex","value":"false"}
6kkfgxo0

6kkfgxo04#

只需在git命令之前使用以下命令。类似于:

$ GIT_TRACE=true \
GIT_CURL_VERBOSE=true \
GIT_SSH_COMMAND="ssh -vvv" \
GIT_TRACE_PACK_ACCESS=true \
GIT_TRACE_PACKET=true \
GIT_TRACE_PACKFILE=true \
GIT_TRACE_PERFORMANCE=true \
GIT_TRACE_SETUP=true \
GIT_TRACE_SHALLOW=true \
git clone git://host.xz/path/to/repo.git
8yparm6h

8yparm6h5#

对于 some git-commands,你可以指定--verbose

git 'command' --verbose

git 'command' -v

确保开关在实际的git命令之后。否则-它将无法工作!
也很有用:

git 'command' --dry-run

相关问题