如何配置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工具有什么问题吗?
我正在为写一个post-commit
钩子git
。我想知道最新提交是否更改了特定目录中的任何文件。如果有任何更改,我可以继续并调用一些昂贵的代码,否则我可以跳过它。
# get last commit hash prepended with @ (i.e. @8a323d0)
function parse_git_hash() {
git rev-parse --short HEAD 2> /dev/null | sed "s/\(.*\)/@\1/"
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要确定指定目录是否有任何更改。但是我不确定该怎么做。我已经看了,用打git-log
和git-show
,但没有成功为止。
所以,我需要做这样的事情。
if [directory-changed()] {
echo "start expensive operation"
}
Run Code Online (Sandbox Code Playgroud)
这实际上使我进入了其中:实际上,它捕获了最后一次提交而不是指定的提交。
git log -U a79851b -1 my/directory/path
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我有以下问题。我想从 获取输出git diff
,但对于所有未提交的本地更改(这意味着未暂存和暂存的文件)。
我不是在搜索 git log 或任何其他输出,它必须被git diff
输出,因为然后我用我制作的解析器解析它。
现在我有:
所有未暂存的文件:
git diff
Run Code Online (Sandbox Code Playgroud)
暂存 + 未暂存文件 + 所有本地提交(与远程相比)
git diff origin/master
Run Code Online (Sandbox Code Playgroud)
现在,我错过了可以获取git diff
所有未暂存和已暂存文件的部分,但不将其与远程进行比较(因为它也需要所有本地提交),而只是将其与上次本地提交进行比较。有没有办法做到这一点?