git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
leafx
V2EX  ›  git

关于 GIT 生成更新包的问题

  •  
  •   leafx · Jan 16, 2015 · 5915 views
    This topic created in 4146 days ago, the information mentioned may be changed or developed.

    今天在分支中使用

    git archive -o update.zip NEW_COMMIT_ID_HERE $(git diff --name-only OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE)

    提取更新包,发现会出现问题,是GIT机制问题还是我的系统问题呢,那位大神了解或者大家有更好的打更新包的方法,求分享

    18 replies    2015-01-16 23:54:46 +08:00
    zealic
        1
    zealic  
       Jan 16, 2015
    你总得说是什么问题...
    zts1993
        2
    zts1993  
       Jan 16, 2015 via Android
    这命令看上去不错
    Delbert
        3
    Delbert  
       Jan 16, 2015
    git tag 之后 git push --tags不就可以生成release包了?
    v7
        4
    v7  
       Jan 16, 2015
    git diff --name-only
    得到的文件列表包括修改的文件和删除的文件
    如果diff里有删除的文件 会出问题吧?
    leafx
        5
    leafx  
    OP
       Jan 16, 2015
    @v7 是的 一般这个包是提供给客户的 一般删除的文件不会影响到客户正式站点的访问 重要的特殊提醒下就是了

    兄台有更好的解决方案么
    leafx
        6
    leafx  
    OP
       Jan 16, 2015
    @zealic 提示:

    fatal: Could not switch to '/345/': No such file or directory

    首先,我发现 我的两个commit 没有打错且2个commit 之间有改动

    另外一提,在 master 分支就不会出现这个问题,或者说,在 我当前 dev 分支和主分支分离前是的可以导出的
    leafx
        7
    leafx  
    OP
       Jan 16, 2015
    @zealic 提示:

    fatal: Could not switch to '/345/': No such file or directory

    首先,我发誓 我的两个commit 没有打错且2个commit 之间有改动

    另外一提,在 master 分支就不会出现这个问题,或者说,在 我当前 dev 分支和主分支分离前是的可以导出的
    v7
        8
    v7  
       Jan 16, 2015
    @leafx 使用 git diff --name-status 给出的文件列表会标示是修改(M)还是删除(D) 简单脚本将删除的去掉就行了
    leafx
        9
    leafx  
    OP
       Jan 16, 2015
    @v7 非常感谢,不过我们这边客户都是大爷一般,更新都懒得更,更别说执行脚本什么的,现在我的目的就是一直增量的去更新就可以了
    v7
        10
    v7  
       Jan 16, 2015
    @leafx 这个不是在打包文件提供增量之前做的么? 客户不需要执行脚本
    leafx
        11
    leafx  
    OP
       Jan 16, 2015
    @Delbert 这个包应该是完整的包吧 小弟需要的仅仅一个更新包就好了
    v7
        12
    v7  
       Jan 16, 2015
    git archive -o update.zip NEW_COMMIT_ID_HERE $(git diff --name-only --diff-filter=M OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE)
    v7
        13
    v7  
       Jan 16, 2015
    git archive -o update.zip NEW_COMMIT_ID_HERE $(git diff --name-only --diff-filter=[A,M] OLD_COMMIT_ID_HERE NEW_COMMIT_ID_HERE)
    这条有新添加文件也会更新
    leafx
        14
    leafx  
    OP
       Jan 16, 2015
    @v7 我这还是会出现一些问题,不纠结了,回头到MAC
    leafx
        15
    leafx  
    OP
       Jan 16, 2015
    @v7 我这还是会出现一些问题,不纠结了,回头到MAC上试一试
    v7
        16
    v7  
       Jan 16, 2015
    @leafx ps: 你这样生成不是增量 而是打包了有改动的文件而已 做apply的时候应该做文件的替换
    zealic
        17
    zealic  
       Jan 16, 2015
    @leafx 感觉似乎是中文文件名导致的问题。

    1. 确定你的 git 版本 > 1.8.x
    2. 仓库建立时使用的 git 版本 > 1.8.x

    如果 345 是 commit 的话,先确定你的工作分支包含 NEW_COMMIT and OLD_COMMIT,并确保他们的连通性。
    leafx
        18
    leafx  
    OP
       Jan 16, 2015 via Android
    @zealic 非常感谢,能确定的是 commit是没问题的,明天检查下git版本
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 466ea39e · 53ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.