This topic created in 3444 days ago, the information mentioned may be changed or developed.
使用 gitlab 做代码库, develop 开发,合并到 master 时偶尔会出现代码异常回退覆盖问题,请问有遇到和知道怎么解决的吗?谢谢。
现象如下:开发人员 A 在版本 1 修改了部分代码,然后开发人员 B 提交到版本 5 的时候,发现版本 1 修改的代码回退到了版本 0 。 B 提交版本 5 的时候没有任何异常。
Supplement 1 Dec 20, 2016 这个应该跟 gitlab 没关系,是操作问题。我们是按 git flow 来使用分支的,我负责把所有要部署的功能从 release 合并到 master ,基本上会仔细核对每个更改。但是偶尔还是会发现某些以前的 bug 又重现了,最后发现是这些代码被回退了,不知道大家有没遇到这种情况,然后如何解决,是否是分支合并不规范引起的?
11 replies 2016-12-21 12:11:39 +08:00  | | 1 exch4nge Dec 20, 2016 没懂 LZ 写的这段描述……
我记得 gitlab 默认不让强制更改已经提交的服务器端的 git 历史的。 |
 | | 2 hosiet Dec 20, 2016 via Android 1 一个一个提交看 diff 历史。就那么几个提交,总能找到不正常的修改在哪里。
另外可以对文件进行 git blame 按行查看最后一次修改的日期。 |
 | | 3 yoa1q7y Dec 20, 2016 国外大神经常在文档和问答里说的一句话是:你应该知道自己在干什么 |
 | | 4 pright Dec 20, 2016 B 是不是没有 pull 版本 1 ,自己-f 一路提交到版本 5 了 |
 | | 7 dodogod Dec 20, 2016 @ pright 很少有-f 的情况,大部分都是 rebase ,然后再 commit 的 |
 | | 8 xcatliu Dec 20, 2016 可以配置 master 禁止 -f 吧 |
 | | 9 hosiet Dec 20, 2016 via Android 你就要看所谓“回退”的那个提交是谁做的,然后去找做出那个提交的作者,让他背锅 |
 | | 10 SoloCompany Dec 20, 2016 1 如果没有 -f 过,那必然是被 commit 所覆盖了, git blame 一般能找出来是被哪次 commit 覆盖的 如果 -f 过的话,原因会比较复杂,但在协作上一般不太可能
我觉得更大可能是开发者不熟悉 git ,在自己分支上开发 pull 的时候执行了错误的合并以及 conflict 处理所导致 |
 | | 11 owt5008137 Dec 21, 2016 via Android 1 这种情况,十有八九是某个人 merge 的时候 revert 掉了别人的更改。对于这种不会用 git 的人,一般我都给他设 autorebase 和 automerge 保平安 |