我正在寻找一个简单的git命令,它提供了一个格式良好的所有文件列表,这些文件是散列(SHA1)给出的提交的一部分,没有任何无关的信息.
我试过了:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Run Code Online (Sandbox Code Playgroud)
虽然它列出了文件,但它还包含每个文件的不需要的差异信息.
是否有另一个git命令只提供我想要的列表,以便我可以避免从git show输出中解析它?
除了编写别名或脚本之外,是否有更短的命令来获取特定提交的差异?
git diff 15dc8^..15dc8
Run Code Online (Sandbox Code Playgroud)
如果您只提供单个提交ID git diff 15dc8,则会针对HEAD区分该提交.
如何配置Git使用不同的工具与.gitconfig文件进行区分?
我在.gitconfig中有这个:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Run Code Online (Sandbox Code Playgroud)
这是行不通的; 它只是打开常规命令行diff.当我做
export GIT_EXTERNAL_DIFF=git-chdiff
Run Code Online (Sandbox Code Playgroud)
然后git diff将打开外部差异工具(所以我知道外部差异工具脚本工作正常).我的.gitconfig配置对于diff工具有什么问题吗?
我对如何使用感到很困惑git archive.
我有一个git存储库,顶层有文件夹 Foo,Bar和Baz.我需要以SVN方式导出文件夹Foo,以便快速进行测试部署.
我才知道,我可以用git-archive在SVN-ISH出口排序的方式.
但事情就是这样,以下工作正常:
git archive master | tar -x -C ~/destination
Run Code Online (Sandbox Code Playgroud)
它导致目标文件夹中的Foo,Bar,Baz文件夹.
然而,下面就会因错误使用fatal not a valid object name:
git archive master/foo | tar -x -C ~/destination
Run Code Online (Sandbox Code Playgroud)
作为该git archive程序的概要,我看到它可以<tree-ish> [path]作为一个参数(概要总结为相关部分):
git archive <tree-ish> [path...]
Run Code Online (Sandbox Code Playgroud)
如果 master/foo 不是 tree-ish,那么是什么?
......这两个命令之间的区别是什么?为什么要麻烦他们两个?