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

git 代码异常回退覆盖的原因是什么,怎么避免?

  •  
  •   dodogod · 2016-12-20 11:53:00 +08:00 · 3397 次点击
    这是一个创建于 2894 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 gitlab 做代码库, develop 开发,合并到 master 时偶尔会出现代码异常回退覆盖问题,请问有遇到和知道怎么解决的吗?谢谢。
    现象如下:开发人员 A 在版本 1 修改了部分代码,然后开发人员 B 提交到版本 5 的时候,发现版本 1 修改的代码回退到了版本 0 。 B 提交版本 5 的时候没有任何异常。
    第 1 条附言  ·  2016-12-20 14:49:38 +08:00
    这个应该跟 gitlab 没关系,是操作问题。我们是按 git flow 来使用分支的,我负责把所有要部署的功能从 release 合并到 master ,基本上会仔细核对每个更改。但是偶尔还是会发现某些以前的 bug 又重现了,最后发现是这些代码被回退了,不知道大家有没遇到这种情况,然后如何解决,是否是分支合并不规范引起的?
    11 条回复    2016-12-21 12:11:39 +08:00
    exch4nge
        1
    exch4nge  
       2016-12-20 12:16:44 +08:00
    没懂 LZ 写的这段描述……

    我记得 gitlab 默认不让强制更改已经提交的服务器端的 git 历史的。
    hosiet
        2
    hosiet  
       2016-12-20 13:12:51 +08:00 via Android   ❤️ 1
    一个一个提交看 diff 历史。就那么几个提交,总能找到不正常的修改在哪里。

    另外可以对文件进行 git blame 按行查看最后一次修改的日期。
    yoa1q7y
        3
    yoa1q7y  
       2016-12-20 13:19:40 +08:00
    国外大神经常在文档和问答里说的一句话是:你应该知道自己在干什么
    pright
        4
    pright  
       2016-12-20 13:52:42 +08:00
    B 是不是没有 pull 版本 1 ,自己-f 一路提交到版本 5 了
    Simpleyyt
        5
    Simpleyyt  
       2016-12-20 14:06:49 +08:00
    你的描述非常有问题
    Simpleyyt
        6
    Simpleyyt  
       2016-12-20 14:08:12 +08:00
    应该是操作问题,可以讲具体一点。
    dodogod
        7
    dodogod  
    OP
       2016-12-20 14:50:51 +08:00
    @pright 很少有-f 的情况,大部分都是 rebase ,然后再 commit 的
    xcatliu
        8
    xcatliu  
       2016-12-20 14:55:28 +08:00
    可以配置 master 禁止 -f 吧
    hosiet
        9
    hosiet  
       2016-12-20 14:56:47 +08:00 via Android
    你就要看所谓“回退”的那个提交是谁做的,然后去找做出那个提交的作者,让他背锅
    SoloCompany
        10
    SoloCompany  
       2016-12-20 23:54:25 +08:00   ❤️ 1
    如果没有 -f 过,那必然是被 commit 所覆盖了, git blame 一般能找出来是被哪次 commit 覆盖的
    如果 -f 过的话,原因会比较复杂,但在协作上一般不太可能

    我觉得更大可能是开发者不熟悉 git ,在自己分支上开发 pull 的时候执行了错误的合并以及 conflict 处理所导致
    owt5008137
        11
    owt5008137  
       2016-12-21 12:11:39 +08:00 via Android   ❤️ 1
    这种情况,十有八九是某个人 merge 的时候 revert 掉了别人的更改。对于这种不会用 git 的人,一般我都给他设 autorebase 和 automerge 保平安
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   998 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:49 · PVG 03:49 · LAX 11:49 · JFK 14:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.