代码之家  ›  专栏  ›  技术社区  ›  DarthVader

返回到特定提交

git
  •  1
  • DarthVader  · 技术社区  · 8 年前

    我们在项目中使用github模型。ie:开发人员发送pull请求,然后我们将其合并到master。

    我们从 master 树枝我们进行代码冻结、回归和集成测试,然后通过蓝绿色部署上线。没有回归和集成测试,我们不会进行任何生产部署。

    如何返回到时间T的前一个提交并进行更改,然后提交到当前时间?

    1 回复  |  直到 8 年前
        1
  •  2
  •   VonC    8 年前

    Git一直都是靠自己做到这一点的 master 树枝

    security fixes for CVE-2017-1000117 ,多个Git版本已经集成到 ,在恢复下一个开发周期之前:

    vonc@VONC D:\git\git
    > git lg 85df69e47  
    
    *   85df69e47  - (master) Start post 2.14 cycle (8 days ago) Junio C Hamano
    *   4274c698f  - Merge tag 'v2.14.1' (8 days ago) Junio C Hamano
    |\
    | * 4d7268b88  - (tag: v2.14.1, origin/maint) Git 2.14.1 (8 days ago) Junio C Hamano
    | *   230ce07d1  - Merge tag 'v2.13.5' into maint (8 days ago) Junio C Hamano
    | |\
    | | * 7234152e6  - (tag: v2.13.5) Git 2.13.5 (11 days ago) Junio C Hamano
    | | *   e312af164  - Merge tag 'v2.12.4' into maint (11 days ago) Junio C Hamano
    | | |\
    | | | * 3d9c5b5c4  - (tag: v2.12.4) Git 2.12.4 (13 days ago) Junio C Hamano
    | | | *   3def5e9a8  - Merge tag 'v2.11.3' into maint-2.12 (13 days ago) Junio C Hamano
    | | | |\
    | | | | * 3b8274448  - (tag: v2.11.3) Git 2.11.3 (13 days ago) Junio C Hamano
    | | | | *   05bb78abc  - Merge tag 'v2.10.4' into maint-2.11 (13 days ago) Junio C Hamano
    | | | | |\
    | | | | | * 0bfff8146  - (tag: v2.10.4) Git 2.10.4 (13 days ago) Junio C Hamano
    | | | | | *   d78f06a1b  - Merge tag 'v2.9.5' into maint-2.10 (13 days ago) Junio C Hamano
    | | | | | |\
    | | | | | | * 4d4165b80  - (tag: v2.9.5) Git 2.9.5 (13 days ago) Junio C Hamano
    | | | | | | *   af0178aec  - Merge tag 'v2.8.6' into maint-2.9 (13 days ago) Junio C Hamano
    | | | | | | |\
    | | | | | | | * 8d7f72f17  - (tag: v2.8.6) Git 2.8.6 (13 days ago) Junio C Hamano
    | | | | | | | *   7720c33f6  - Merge tag 'v2.7.6' into maint-2.8 (13 days ago) Junio C Hamano
    | | | | | | | |\
    | | | | | | | | * 5e0649dc6  - (tag: v2.7.6) Git 2.7.6 (13 days ago) Junio C Hamano
    | | | | | | | | *   a4f234bf9  - Merge branch 'jk/ssh-funny-url' into maint-2.7 (2 weeks ago) Junio C Hamano
    | | | | | | | | |\
    | | | | | | | | | * aeeb2d496  - connect: reject paths that look like command line options (2 weeks ago) Jeff King
    | | | | | | | | | * 3be4cf09c  - connect: reject dashed arguments for proxy commands (2 weeks ago) Jeff King
    | | | | | | | | | * 2491f77b9  - connect: factor out "looks like command line option" check (2 weeks ago) Jeff King
    | | | | | | | | | * 2d90add5a  - t5813: add test for hostname starting with dash (2 weeks ago) Jeff King
    | | | | | | | | | * 820d7650c  - connect: reject ssh hostname that begins with a dash (2 weeks ago) Junio C Hamano
    * 85df69e47  - Start post 2.14 cycle (8 days ago) Junio C Hamano
    * 4384e3cde  - (tag: v2.14.0) Git 2.14 (8 days ago) Junio C Hamano
    

    主人

    • 85df69e47 -启动后2.14周期
    • 4274c698f
    • 85df69e47
    • 4384e3cde -(标签:v2.14.0)主机上的Git 2.14


    在“返回到时间T的前一个提交并进行更改,提交然后转发到当前时间”序列中,中间 4274c698f Merge tag 'v2.14.1' “进入 主人
    你现在可以继续你离开的地方了 Start post 2.14 cycle ").

    因此,在您的情况下,您可以从正确的旧SHA1开始在任何临时分支上开发修复程序,然后对一个新标记(其中您的 VERSION

    然后将其合并到 主人

    但这里有一个诀窍:将该修复分支合并到 主人 具有 git merge --ours 。这样,合并提交实际上是空的。

    查看任何名为“”的合并提交(位于上面提交列表的顶部) Merge tag 'v2.x.y' ".

    It is just there to reference all those fix branches (for 2.14.1, 2.13.5, 2.12.4, ...)
    
    vonc@VONC D:\git\git
    > git lg|grep "Merge tag 'v"
    * | | | | | | | | | | | | | | |   4274c698f  - Merge tag 'v2.14.1' (8 days ago) Junio C Hamano
    | * | | | | | | | | | | | | | | |   230ce07d1  - Merge tag 'v2.13.5' into maint (8 days ago) Junio C Hamano
    | | * | | | | | | | | | | | | | | |   e312af164  - Merge tag 'v2.12.4' into maint (11 days ago) Junio C Hamano
    | | | * | | | | | | | | | | | | | | |   3def5e9a8  - Merge tag 'v2.11.3' into maint-2.12 (13 days ago) Junio C Hamano
    | | | | * | | | | | | | | | | | | | | |   05bb78abc  - Merge tag 'v2.10.4' into maint-2.11 (13 days ago) Junio C Hamano
    | | | | | * | | | | | | | | | | | | | | |   d78f06a1b  - Merge tag 'v2.9.5' into maint-2.10 (13 days ago) Junio C Hamano
    | | | | | | * | | | | | | | | | | | | | |   af0178aec  - Merge tag 'v2.8.6' into maint-2.9 (13 days ago) Junio C Hamano
    | | | | | | | * | | | | | | | | | | | | | |   7720c33f6  - Merge tag 'v2.7.6' into maint-2.8 (13 days ago) Junio C Hamano
    

    查看任何这些提交的内容。

    > git show 4274c698f
    commit 4274c698f46a9bc45834c4904e7e113450c042fb
    Merge: 85df69e47 4d7268b88
    Author: Junio C Hamano <gitster@pobox.com>
    Date:   Fri Aug 4 12:45:17 2017 -0700
    
        Merge tag 'v2.14.1'
    
    () <=== nothing to see there, no diff of any kind.
    
    vonc@VONC D:\git\git
    > git show 230ce07d1
    commit 230ce07d134f597a8107d3ed5d76d212ff90db70
    Merge: 4384e3cde 7234152e6
    Author: Junio C Hamano <gitster@pobox.com>
    Date:   Fri Aug 4 12:40:37 2017 -0700
    
        Merge tag 'v2.13.5' into maint
    
    () <=== nothing to see there either, no diff of any kind.
    

    临时(修补程序)分支
    我举例说明了临时分支(官方“git工作流”的一部分)在以下方面的使用: