这是我的问题。
在同一个存储库中,我有多个项目。
让我们称呼他们为A
和B
(并忘记C
,D
以及与当前主题无关的所有其他人。
在A
中,我有一个类(我们称之为SuperUsefull
),其中包含一些在整个系统中非常有用的逻辑,但项目A
不可用于我的其他项目。
另一方面,B
的课程适用于所有项目。
所以我想要做的是将SuperUsefull
从A
移到B
,但我想在git中保持git历史跟踪(比如责备等)。
但是,A
是一个非常大的项目,我目前无法完全重构。
所以我想我可以按照以下步骤进行:
package org.company.a;
/**
* a comment explaining why this class has been deprecated and where to find the new one.
*/
@Deprecated
public class SuperUsefull extends org.company.b.SuperUsefull {}
所以我的问题是如何(在同一次提交中) - 逻辑的位移 - 即使进入另一个文件,也要跟踪代码 - 将一个文件视为新文件,其中包含上一次提交中的文件 - 保持所有这一切,让世界将其视为一个提交,因为它只有在所有事件同时发生时才有意义。
有可能吗? 我是否必须git move然后创建文件并添加它?它合法吗? 在推之前我是否必须承诺并压扁它们?这里的最佳做法是什么?