V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
leafx
V2EX  ›  git

关于 GIT 生成更新包的问题

  •  
  •   leafx · 2015-01-16 15:22:28 +08:00 · 5153 次点击
    这是一个创建于 3584 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在分支中使用

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

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

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

    兄台有更好的解决方案么
    leafx
        6
    leafx  
    OP
       2015-01-16 18:00:33 +08:00
    @zealic 提示:

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

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

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

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

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

    另外一提,在 master 分支就不会出现这个问题,或者说,在 我当前 dev 分支和主分支分离前是的可以导出的
    v7
        8
    v7  
       2015-01-16 18:09:27 +08:00
    @leafx 使用 git diff --name-status 给出的文件列表会标示是修改(M)还是删除(D) 简单脚本将删除的去掉就行了
    leafx
        9
    leafx  
    OP
       2015-01-16 18:12:00 +08:00
    @v7 非常感谢,不过我们这边客户都是大爷一般,更新都懒得更,更别说执行脚本什么的,现在我的目的就是一直增量的去更新就可以了
    v7
        10
    v7  
       2015-01-16 18:17:12 +08:00
    @leafx 这个不是在打包文件提供增量之前做的么? 客户不需要执行脚本
    leafx
        11
    leafx  
    OP
       2015-01-16 18:22:20 +08:00
    @Delbert 这个包应该是完整的包吧 小弟需要的仅仅一个更新包就好了
    v7
        12
    v7  
       2015-01-16 18:35:55 +08:00
    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  
       2015-01-16 18:38:21 +08:00
    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
       2015-01-16 18:47:58 +08:00
    @v7 我这还是会出现一些问题,不纠结了,回头到MAC
    leafx
        15
    leafx  
    OP
       2015-01-16 18:48:12 +08:00
    @v7 我这还是会出现一些问题,不纠结了,回头到MAC上试一试
    v7
        16
    v7  
       2015-01-16 18:50:16 +08:00
    @leafx ps: 你这样生成不是增量 而是打包了有改动的文件而已 做apply的时候应该做文件的替换
    zealic
        17
    zealic  
       2015-01-16 20:35:38 +08:00
    @leafx 感觉似乎是中文文件名导致的问题。

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

    如果 345 是 commit 的话,先确定你的工作分支包含 NEW_COMMIT and OLD_COMMIT,并确保他们的连通性。
    leafx
        18
    leafx  
    OP
       2015-01-16 23:54:46 +08:00 via Android
    @zealic 非常感谢,能确定的是 commit是没问题的,明天检查下git版本
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2520 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 98ms · UTC 01:29 · PVG 09:29 · LAX 17:29 · JFK 20:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.