我想简化my original complicated question。
我在存储库中有以下文件:
E:\\a\b\FooOld\foo.java
几周前,我使用新的存储库将文件复制到另一个目录:
E:\\c\d\FooNew\foo.java
是否可以将foo.java的文件历史记录从旧存储库复制到新存储库?
答案 0 :(得分:2)
这实际上是不可能的,原因很简单,因为Git中没有“文件历史记录”之类的东西。在Git中,历史记录只是所有提交的集合。如果添加提交,则添加历史记录。无论有什么承诺,这些都是历史。而且,每个提交代表文件全部的完整快照(嗯,该提交中的所有文件,但这有点多余)。
您可以要求class Room {
string id;
string room3dmodellink;
List<Mediaboards> mediaboards;
}
class Mediaboard{
string id;
string mediaboard3dModleLink;
List<Slide> slides;
}
class Slide{
string id;
string imageLink;
}
显示修改某些特定文件的提交。这种工作方式是git log
遍历历史-向后,一次提交,换句话说,一次遍历-并且比较此提交中的所有文件< / em>来上一个提交中的所有文件。如果您好奇的一个特定文件已更改,git log
现在显示< / em>这个提交。然后,它继续(或更确切地说,返回)到上一个提交,无论它是否显示此提交,并使用相同的规则显示或不显示那个提交,依此类推。
答案 1 :(得分:1)
可以通过两个大步骤来完成。假设您有一个仓库A
,其中包含要添加到其他仓库B
上的文件:
git filter-branch
创建仓库A
的克隆,其中仅包含您要保留的文件的历史记录。要实现此目的,如果您需要保留移动和重命名的历史记录,可以查看this answer,否则在Stack Overflow上还有很多其他答案可以使用{{1 }}。或者,您可以使用filter-repo,这似乎是重写历史记录的一种更快,更简单的方法。
重要:请记住在您的存储库的克隆上运行git filter-branch
。我还建议在克隆上运行git filter-branch
,这样就没有机会无意间将此剥离的版本推到原始版本。
合并将git remote rm origin
剥离为A
。在仓库B
中,执行以下操作:
2.1。创建从B
到B
的远程连接:
A
;
2.2。使用选项git remote add repo-A <git repository stripped A directory>
拉动。如果两个仓库都使用--allow-unrelated-histories
分支,则以下命令会将一个仓库合并到另一个仓库中:
master
2.3。删除远程连接:
git pull repo-A master --allow-unrelated-histories