2016-10-05 26 views
1

我相信我复制粘贴一个git项目内容(编辑) B.在我的项目文件夹中A.经过一些测试和修改后,我删除了git项目B,并添加了远程。但是所有的提交历史仍然显示在我的项目中A.Git删除第二个存储库和历史

  • 如何删除除原始项目以外的所有内容?

观察:

  • 当我做混帐分支-av,我只看到一个项目,这是很好的分支。

  • 当我做远程Git,我只看到了原点,这是很好(我删除了B项目 - 原点)

  • 当我告诉所有的分支,我看到了这两个项目的提交。

  • 没有提交从项目A合并到B或反之亦然。 (我可以sourcetree看到这两个项目不穿过对方。

  • 在git的文件夹中,我可以看到在SHA不属于项目A的日志和裁判丹斯

我不知道我所做的一切正好与此状态下结束了......

评论:

的文件夹路径示例:

C:\ gitRepo \项目AB \

C:\ gitRepo \ ProjectAB \项目A-1 ...

C:\ gitRepo \ ProjectAB \项目A-2 ...

C:\ gitRepo \ ProjectAB \项目B-1 ...

C:\ gitRepo \ ProjectAB \项目B-2 ...

回答

0

当你复制粘贴B插入一个Git回购,您创建了一个nested git repo
这意味着,每次B有新提交时,A将新的B SHA1记录为gitlinkspecial entry in A index)。

当您删除B时,您在A中添加并提交该删除(以记录删除的gitlink B)。

但是,A的历史将仍然具有B历史中被修改的所有实例(因为每当B有其自己的新提交时B连接会改变)。

从历史完全删除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,它出现即:

  • 回购B被复制超过 A(导致混合.git内容)
  • 它看起来像更改已转移到远程A(所以不可能克隆)。

的结论是:

好吧,将创建一个新的项目,并从那里刚刚起步,这是一个比较新的项目,如果我们失去了最后的100秒的提交将不会有太大的麻烦。

+0

参数PATH-TO-B是原始路径还是复制文件夹路径? – Kadgiko

+0

这是文件夹B在回购A – VonC

+0

我目前有多个文件夹的项目B,A和B都有相同的根。所以根就会像是一样(见编辑答案表格)。项目B没有完全嵌套在A中有类似于C:\ GitRepo \ ProjectA \ ProjectB – Kadgiko