Bash git-如何在不更新head的情况下使用特定commitid更改文件?

Bash git-如何在不更新head的情况下使用特定commitid更改文件?,bash,git,Bash,Git,我想做一个自动测试系统。用户上传或更改脚本,当他们将文件推送到git时,系统将获得提交操作,并知道提交id,如3c6a88d527ccaefabf98d00f47f04789f01e2830,并引导docker运行更改后的脚本 首先,git将所有文件克隆到一个目录,然后按顺序获取更改的文件: git diff-tree --no-commit-id --name-only -r <id> git-diff-tree——无提交id——仅名称-r 很长一段时间后,存储库中会有很多脚本

我想做一个自动测试系统。用户上传或更改脚本,当他们将文件推送到git时,系统将获得提交操作,并知道提交id,如
3c6a88d527ccaefabf98d00f47f04789f01e2830
,并引导docker运行更改后的脚本

首先,git将所有文件克隆到一个目录,然后按顺序获取更改的文件:

git diff-tree --no-commit-id --name-only -r <id>
git-diff-tree——无提交id——仅名称-r
很长一段时间后,存储库中会有很多脚本,我不想每次测试时都将所有脚本拉到本地目录。是否有任何命令只拉取我想要的部分文件?

#显示提交日志和差异输出
# Shows commit logs and diff output
git whatchanged <sha-1>
吉特:发生了什么变化

使用diff树(如您所想)
#取出更改(无需签出分支)
git fetch--全部--prune
#现在打印出更改
git diff树--无提交id--仅名称-r
#显示提交日志和差异输出
吉特:发生了什么变化

使用diff树(如您所想)
#取出更改(无需签出分支)
git fetch--全部--prune
#现在打印出更改
git diff树--无提交id--仅名称-r
# Fetch out changes (no need to checkout branches) 
git fetch --all --prune

# Now print out the changes
git diff-tree --no-commit-id --name-only -r <id>