如何在Git中获取最新提交中提交的对象的名称

时间:2017-07-27 13:06:00

标签: git

我试图获取上次提交中提交的对象的名称,然后尝试压缩所有这些文件。我已经有了归档命令,它将获取这些文件并压缩它们。 下面的命令会压缩分支中的所有文件。

git archive -o update.zip HEAD

但是如果我可以以某种方式获取命令来获取上次提交中提交的对象列表,我可以将这两个命令组合在一起并仅压缩这些对象,如下所示。

git archive -o update.zip HEAD $(COMMAND TO GET NAME)

在预先感谢所有帮助!

1 个答案:

答案 0 :(得分:1)

git diff --name-only HEAD^ HEAD

这实际上适用于任何两个提交之间的任何差异:

git diff --name-only master test
git diff --name-only 4.2.1 staging
git diff --name-only ea43c77 HEAD
# etc ...

注意:此方法无法区分已修改/添加的文件和已删除/重命名的文件。

您可以尝试--name-status选项,该选项会在每个文件名前添加A, M or D

git diff --name-status <commit1> <commit2>

然后,您需要进行一些额外处理,将此列表拆分为“这些文件应添加到zip存档”,并且“应从目标目录中删除这些文件”。

如果您打算应用此差异的修改,您还可以生成补丁文件,并将其应用于目标目录:

# inside your repo :
git diff -p HEAD^ HEAD > update.patch

# in your target directory :
patch update.patch