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

2016-12-20 11:53:00 +08:00
 dodogod
使用 gitlab 做代码库, develop 开发,合并到 master 时偶尔会出现代码异常回退覆盖问题,请问有遇到和知道怎么解决的吗?谢谢。
现象如下:开发人员 A 在版本 1 修改了部分代码,然后开发人员 B 提交到版本 5 的时候,发现版本 1 修改的代码回退到了版本 0 。 B 提交版本 5 的时候没有任何异常。
3438 次点击
所在节点    git
11 条回复
exch4nge
2016-12-20 12:16:44 +08:00
没懂 LZ 写的这段描述……

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

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

我觉得更大可能是开发者不熟悉 git ,在自己分支上开发 pull 的时候执行了错误的合并以及 conflict 处理所导致
owt5008137
2016-12-21 12:11:39 +08:00
这种情况,十有八九是某个人 merge 的时候 revert 掉了别人的更改。对于这种不会用 git 的人,一般我都给他设 autorebase 和 automerge 保平安

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/328833

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX