gpt4 book ai didi

linux - 如何获取与预推 git Hook 中的原始文件不同的所有文件的列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:05 26 4
gpt4 key购买 nike

我正在尝试(未成功)获取与预推送 Hook 中的原始文件不同的所有文件的列表。

它需要在以下条件下工作:

  1. 分支尚未推送到远程,因此应输出所有本地提交中的所有文件
  2. 分支存在于远程,但本地领先 X 次提交,因此仅显示不同的文件。

示例预提交 Hook 中的 range 看起来很有前途,所以我将它与 diff 结合使用,但它不满足条件 2。所有更改的文件都被返回,即使它们已经在原点。

z40=0000000000000000000000000000000000000000

while read local_ref local_sha remote_ref remote_sha
do
if [ "$local_sha" = $z40 ]
then
# Handle delete
:
else
if [ "$remote_sha" = $z40 ]
then
# New branch, examine all commits
range="$local_sha"
else
# Update to existing branch, examine new commits
range="$remote_sha..$local_sha"
fi

diffFiles=`git diff --diff-filter=d --name-only origin "$range" | grep ".js$"`
echo "$diffFiles"
fi
done

我还尝试显式地diff分支,当远程分支存在时它起作用,但当它不存在时出错。有没有办法事先知道它是否存在?

branchName=`git symbolic-ref --short -q HEAD`
diffFiles=`git diff --diff-filter=d --name-only origin/$branchName $branchName`

echo "$diffFiles"

最佳答案

您可以检查远程分支是否存在:

git ls-remote <yourremote> | grep -q <branchname>

如果存在,它将以状态码 0 退出

关于linux - 如何获取与预推 git Hook 中的原始文件不同的所有文件的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48828784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com