我的提交历史确实存在问题。嗯,这实际上不是一个问题,因为它不会影响问题,它更像是一个视觉问题。基本上我正在开发一个CakePHP项目,我试图将CakePHP添加为子模块,但是后来我放弃了。问题是我的历史现在看起来像这样(在塔上):
正如您所看到的,该行停止并重新开始,并且在所有CakePHP历史记录之前,它是其git存储库之一。我应该怎么做才能将其删除?!感谢。
答案 0 :(得分:1)
您可以使用git rebase -i
进入交互式rebase模式,您可以在其中选择要保留的提交,要合并的提交(squash
)以及要完全删除的提交(因此更改)该提交所应用的内容将从repo中删除。但是,只有在您尚未共享历史记录时才应执行此操作。如果历史记录发生了变化,并且有旧历史记录试图与新历史记录进行拉/合并,则会产生一些非常严重的合并冲突,因为git不会检测历史记录之间的任何连接。
答案 1 :(得分:1)
看起来您不小心将CakePHP直接拉入项目而不是将其添加为子模块。最简单的方法可能是删除整个仓库并重新开始(或者创建一个新仓库,只从现有仓库中拉出主分支)。您也可以尝试删除CakePHP fetch留下的所有裁判,但这将是一些工作,它会将对象留在您的仓库中几个月,听起来这是一个新项目,所以只是把你关心的提交拉成一个新的回购可能会更简单。
要创建一个只包含现有主分支的新仓库,以下内容应该有效:
mkdir newRepo
cd newRepo
git init
git fetch ../oldRepo/.git master:temp
git reset --hard temp
git branch -d temp
这只会获取master
分支而不会获取其他内容。 temp
的位是因为git否则会拒绝获取非裸存储库的HEAD。
无论如何,一旦你有一个新的回购,你应该只能使用
git submodule add git://url/for/CakePHP.git path/to/submodule
添加子模块。