在不更改贡献者的情况下重命名git中的文件夹



我有一个问题:我们使用的包已经有一段时间没有维护了。所以我们用叉子叉了它,以便自己维护它。这个包已经存在,比如说它被命名为package_a。大部分代码和__init__都在package_a/文件夹中。

现在我们想制作我们自己的包,其中包括我们维护的代码,我们想命名为package_b。到目前为止还不错,但问题是package_b希望将代码和__init__放在package_b/文件夹中,而github在重命名文件夹时会更改所有文件的贡献。我希望捐款的信用保持在到期的地方,一万多行代码并不是凭空出现在我的本地回购中。有什么建议吗?我们如何拥有名为package_b的包,但将代码保留在原始文件夹package_a/中?

我正在考虑尝试一些聪明的方法,将package_a导入package_b或类似的东西,但我希望有一个明确的答案。

不要复制代码或尝试将A导入B,而是将公共代码提取到A和B都导入的第三个包中。或者可能是一个子类。这并不能解决您的贡献问题,但它确实避免了复制和粘贴10000行代码带来的巨大维护麻烦。


Git不记录副本和重命名,但它可以识别它们何时发生。为了让Git有最好的机会识别副本,请在自己的提交中只复制。不对内容进行任何更改。然后在第二次提交中,对复制的代码进行任何必要的更改。

在普通的Git中,你可以轻推git loggit blame以获得副本并用-C重命名。Git默认不会这样做,因为它更昂贵。Github会做Github要做的事。

不管Github说谁写了什么行,他们的贡献仍然会出现在项目历史中。事情就是这样。你做出自己的贡献,然后其他人把自己的工作放在上面。这很正常。他们的贡献历久弥新。

"历史纯粹的";这也是正常的,也就是当一个变化涉及到许多行,但在其他方面是微不足道的。例如,如果您要重新设计代码的样式,这将导致历史纯粹。git blame会说这是最后一次接触代码的提交。git blame -w在一定程度上缓解了这种情况,Github有一个";忽略空白";选项纯粹的历史是正常的,学习跳过它也是正常的

这些工具对我们有用。不要为了这些工具而卑躬屈膝。

如果你想对你的贡献者发出特别的呐喊,可以在你的README.md.上做一个贡献者的部分

最新更新