两个月前,我被带到一个自由项目中,做一些功能工作来帮助另一个开发人员。当我查看存储库时,我发现在一个月内没有任何签到,当我询问该项目是否仍在积极开发时,其他开发人员说'哦,对不起,我不喜欢源代码控制,所以我很少接触它"然后将一个月的代码作为单个提交推送出去。我试图说服他们更积极地参与其中,至少在我参与项目时,他们非常抗拒,所以我最终吞下了我的反对意见,完成了我的工作(使用良好的源代码控制实践!)然后下了车。
快进到今天。我已经离开这个项目一个月了,第三个开发者已经签约了。客户最近发现我的功能自上次检查后就已停止工作,这是我离开后不久。因为我为自己的工作感到自豪,所以我看了一下是什么问题......只是发现我的所有变化都被第一个开发人员的另一个大规模的,长达一个月的承诺所踩踏。更糟糕的是,自从离开项目以来,开发人员不仅完全没有沟通,而且该项目的新开发人员在破旧的办理登机手续之后一直在进行更改(遵循良好的登记手续)。
如何保留我的代码,同时保留第一个开发人员应该进行的更改以及第三个开发人员自那以来的新工作?我无法弄清楚如何解决本应在同一次提交中出现的糟糕的非合并中应该进行的更改。
(请注意,我并没有试图只是抓出一个错误的提交,我试图弄清楚如何保留提交尝试推送的代码撤消"踩踏我的代码"部分。)
答案 0 :(得分:2)
你有这段历史:
arrayRack[0]
注意E之后的状态就好像1-2-3-4从未发生过一样。因此,您应该创建E'并将其合并到master中:
arrayRack[N-1]
您可以通过
实现这一目标-o--1--2--3--4 <-- your changes (master)
\
E <-- the sloppy developer's commit
\
x--y--z <-- third developer's changes
现在您拥有包含您和马虎开发人员更改的状态。 最后,您在此合并之上重新定义第三个开发人员的更改:
-o--1--2--3--4 <-- your changes
\ \
E'--------- o <-- master