git只获取最后一个,即2个提交的列表

时间:2010-10-20 08:56:16

标签: git

我在家里开发Windows并将我的更改发送给客户。客户不希望安装任何SCM,因此我需要发送我从上次迭代中更改的文件。 目前我正在使用Subversion通过自编的批处理实现某种自动化,这是Windows和GNU / unix实用程序的混合。该脚本查看给定的修订,列出更改的文件,删除重复并最后获取列表文件。

@echo off
if (%3) == () goto usage
set TO_REVISION=HEAD
set PUSHNAME=%3-%1

svn log -v -q -r %2 %3 |  sed "s/^[ ^t]*[AM] \/[[:alnum:]_]*\/[[:alnum:]_]*\/\(.*\.[[:alnum:]_]*\)/tar --append --file=%PUSHNAME%.tar \1/" | sed "s/ (.*//g" | sort | uniq | grep -v "config.xml" >> %PUSHNAME%.bat
IF ERRORLEVEL 1 goto error
echo bzip2 %PUSHNAME%.tar>> %PUSHNAME%.bat
echo :: SVN REVISIONS :: %2>> %PUSHNAME%.bat
echo ... %PUSHNAME%.bat generated.
goto done

:usage
echo USAGE: %~nx0 push-file-name from[:to]-revision relative-or-absolute-path
echo See svn log -v -q -r [REV] to view repository log.
goto done

:error
echo ERROR! Check (if exists) output file %PUSHNAME%.bat
goto done

:done

批次并不完美,但对我来说还可以。 现在我决定搬到Git。我已经将subversion存储库转换为Git存储库。但显示塞子对我来说,我无法在Git手册中找到svn -v -q -r log的替换命令:-( 我确信它应该是,但经过一天的搜索,我想询问更有经验的Git-Gurus的帮助。

提前感谢您为我的问题花费的时间,

奥列格

2 个答案:

答案 0 :(得分:1)

我猜你试图获得自提交以来改变的文件列表:

git diff-index <commit> --name-only

将列出自&lt; commit&gt;以来更改的所有文件而且只有他们的名字。

--name-only可以省去sed'ing文件名的麻烦。 使用--name-status会让您更熟悉

A   debian/control 
M   debian/rules

输出

答案 1 :(得分:0)

git show HEAD HEAD^

这将显示当前分支的最后两次提交。有关更多选项,请参阅git show --help