如何获取文件,在GIT中的两个变更集之间进行更改?

时间:2012-02-17 19:00:45

标签: git

很抱歉问题本身质量很差,但我遇到的情况是我所知道的唯一语言与现有术语相冲突。请随意指出正确行话的方向,因为我怀疑如果我知道的话我可以搜索这个答案。

我想使用git创建一个'补丁',其中包含从一个版本的项目更改为另一个版本所需的文件。我不希望实际的GIT补丁根据分支的输出更新主服务器,而是类似于包含自给定更新以来更改的所有文件的zip。

情况是我不想简单地将更新版本的全部内容推送到服务器(有很多文件没有被更改),但同时我不希望有通过并亲自挑选300个文件。

我知道GIT确实有某种类型的FTP部署选项,但我们正在使用的服务没有提供,所以据我所知,我需要的东西类似于商业增量补丁在公司更新产品时分发。我发现GIT不太可能不提供类似于此功能的SOMETHING,但我不知道在哪里/如何找到它。

编辑:因为它从一个答案看起来像它可能是相关的,这个如果对于一个Web应用程序,所以我说的是跟踪css,php,html和js文件,可能有一些艺术卷入了即使源控制系统与艺术不兼容。

3 个答案:

答案 0 :(得分:4)

如果您对xargs的管道差异太难,您可以尝试

  • git-deploy
  • git-ftp
  • git archive
  • 的形式合并git diffgit archive -o update.zip HEAD $(git diff --name-only HEAD^)

答案 1 :(得分:2)

罗恩,我希望这会有所帮助:

    git diff --name-only HEAD HEAD^
    CCodeClasses.cpp
    CCodeClasses.h
    CTypeClasses.cpp
    CTypeClasses.h
    CTypeResolver.cpp
    CTypeResolver.h
    DFSearch.cpp
    DFSearch.h
    Util.cpp
    Util.h
    x32wrapper.cpp
    x32wrapper.h
    mfcreplacements.h

您可以使用提交ID替换HEAD,以获取已更改文件的列表,然后将其传递给tar命令或其他内容。我很想知道是否有更好的方法来做到这一点,因为我需要不时做同样的事情。

答案 2 :(得分:0)

好的,如果我们谈到围绕GIT的以GUI为中心的Windows解决方案,我将能够看到更多异国情调的变态(Git-fanboys,坐下!!!):

具有hg-git扩展名的TortoiseHG(1- Windows 2 - 用于Mercurial SCM的GUI 3)

将git-repository添加到THG中,在changesets-pane中使用context-menu,导出 - 存档 - “仅文件...”

Git Repo

Archive only changes

这两个截图都来自我的git-repo,完全由TortoiseHG处理