2017-07-27 88 views
1

我想获取上次提交中提交的对象上的名称,然后尝试压缩所有这些文件。我已经有了存档命令,它将采取这些文件并压缩它们。 以下命令将压缩分支中的所有文件。如何获取最新提交中提交的对象的名称Git

git archive -o update.zip HEAD 

,但如果我能以某种方式获取命令来获取在最后COMMITED对象名单提交我可以结合这两个命令,按照下图仅压缩这些对象。

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

在此先感谢所有的帮助!

回答

1
git diff --name-only HEAD^ HEAD 

其实,这适用于任意两个之间提交任何DIFF:

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 
+0

有没有什么办法,我可以得到一个列表对象名称从测试分支合并到主? –