git 如何将文件A的更改应用到文件B?

svujldwt  于 2023-08-01  发布在  Git
关注(0)|答案(2)|浏览(119)

我以前没有遇到过这种情况,我的搜索并没有引导我走上正确的道路。
我的两个开发人员为同一个模块创建了文件夹。一个开发者正确地将文件夹命名为“moduleNameHere”,另一个开发者正确地将文件夹命名为“moduleNameHere”。他们同时有PR,没有人注意到重叠。现在有两个文件A.code和B.code在他们自己的文件夹中,实际上应该包含在一个文件中。他们可以保持分开,但它的 * 技术上 * 违反我们的标准,因为他们影响相同的地区。
是否有可能从文件B.code中挑选特定的提交并将其应用于A.code?
我试图用樱桃做些什么,但我可以想出一种方法来改变目标。

kr98yfug

kr98yfug1#

不知道是否有更好的方法,但你可以得到差异,修改文件名,然后apply它:

# save changes between first-commit and last-commit
git diff --output=changes.diff first-commit..last-commit A.code

字符串
然后,编辑changes.diff文件,使其提到文件B.code而不是A.code
最后,告诉git应用更改:

git apply changes.diff


这只会改变工作树,你仍然需要提交它。
另外,请注意,文件B.code在更改之前应该与文件A.code具有几乎相同的内容,以便干净地进行更改。在任何情况下,你应该检查是否一切都已正确应用后。
为了提高成功的机会,您可能需要指定查找差异的算法,例如。关于--diff-algorithm=minimal
如果失败了,您可能需要手动应用更改,但git diff至少为您提供了一个关于更改内容的良好概述。

vktxenjb

vktxenjb2#

您没有指定这两个版本是否恰好在同一个项目/同一个分支中。但假设他们是,我会:
1.提交并将两个开发人员的版本推送到远程。确保远程设备具有所有源的最新版本。
1.将远程文件拉到一个或另一个的本地项目(或克隆到一个新的临时目录)
1.手动将所有源文件的“最佳”版本复制到“正确”目录
1.手动删除“坏”目录(以及其中的所有内容)
1.提交并将更新的“干净”项目推送到远程。确保提供有意义的“提交”消息。
1.“拉”到所有其他项目
好了搞定

相关问题