复制上次提交中更改的所有文件

时间:2015-07-10 12:35:42

标签: git

如何导出上次提交中更改的所有文件?

我是否只能将最后提交的文件列表作为单独的文件夹?

2 个答案:

答案 0 :(得分:9)

  1. 使用以下内容创建名称为 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";
    
  2. 从git项目的根目录运行脚本作为命令:

    ./git-copy.sh git-hash-1 git-hash-2 path/to/destination/folder
    
  3. 它会将具有相同目录结构的所有文件复制到目标文件夹。

答案 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