如何导出上次提交中更改的所有文件?
我是否只能将最后提交的文件列表作为单独的文件夹?
答案 0 :(得分:9)
使用以下内容创建名称为 git-copy.sh 的文件:
#!/bin/bash
# Target directory
TARGET=$3
echo "Finding and copying files and folders to $TARGET"
for i in $(git diff --name-only $1 $2)
do
# First create the target directory, if it doesn't exist.
mkdir -p "$TARGET/$(dirname $i)"
# Then copy over the file.
cp "$i" "$TARGET/$i"
done
echo "Files copied to target directory";
从git项目的根目录运行脚本作为命令:
./git-copy.sh git-hash-1 git-hash-2 path/to/destination/folder
它会将具有相同目录结构的所有文件复制到目标文件夹。
答案 1 :(得分:0)
这是我编写的一个小bash(Unix)脚本,它将使用文件夹结构复制给定提交哈希的文件:
ARRAY=($(git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT $1))
PWD=$(pwd)
if [ -d "$2" ]; then
for i in "${ARRAY[@]}"
do
:
cp --parents "$PWD/$i" $2
done
else
echo "Chosen destination folder does not exist."
fi
创建一个名为'〜/ Scripts / copy-commit.sh'的文件。然后赋予它执行权限:
chmod a+x ~/Scripts/copy-commit.sh
然后,从git存储库的根目录:
~/Scripts/copy-commit.sh COMMIT_KEY ~/Existing/Destination/Folder/
获取最后一次提交哈希:
git rev-parse HEAD