我相信我复制粘贴了一个git项目内容(编辑) B.在我项目的文件夹中A.经过一些测试和修改后,我删除了git项目B,并添加了它。但是所有的提交历史仍然显示在我的项目A中。
观察:
当我做git branch -av时,我只看到项目A中的分支很好。
当我做git remote时,我只看到好的来源(我删除了项目B - 来源)
当我展示所有分支时,我会看到两个项目的提交。
没有提交已从项目A合并到B或反之亦然。 (我在sourcetree中可以看到两个项目都没有相互交叉。
在.git文件夹中,我可以在日志中看到SHA并引用不属于项目A的dans。
我不知道自己到底做了什么才能最终得到这种状态......
评论:
文件夹路径示例:
C:\ gitRepo \ ProjectAB \
C:\ gitRepo \ ProjectAB \项目A-1 ...
C:\ gitRepo \ ProjectAB \项目A-2 ...
C:\ gitRepo \ ProjectAB \项目B-1 ...
C:\ gitRepo \ ProjectAB \项目B-2 ...
答案 0 :(得分:0)
当您将B复制粘贴到A git仓库时,您创建了 nested git repo 。 这意味着,每次B有新提交时,A都会将新的B SHA1记录为 gitlink (special entry in A index)。
当您删除B时,您在A中添加并提交该删除(以记录gitlink B的删除)。
但是A的历史仍然会包含A在历史中被修改的所有实例(因为B gitlink每次B都有自己的新提交时会改变。)
要从A历史记录中完全删除B,您需要git filter-branch
(重写历史记录)
类似的东西:
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-B' \
--prune-empty -- --all
在OP Kadgiko的案例after discussion中,似乎:
.git
内容)结论是:
好吧,将创建一个新项目并从那里开始,这是一个相对较新的项目,如果我们失去最后100个提交,它将不会有太多麻烦。