我创建了一个新项目,其中包括一些已经有 git 存储库的文件夹。
编辑:内部 git 存储库没有在线上传,也没有在其中进行提交,仅在主存储库中
当我为初始提交添加所有带有 git add --all
的文件并将它们推送到 bitbucket 时,内部 git 跟踪文件夹不存在在 s 中,而是列出了一个类似链接的条目,其中包含一个字母数字,如 sha 哈希
<folder name> → 031c27df078f [031c27df078f]
经过一番混乱,我最终删除了带有更改的本地文件和子模块中的 .git 子文件夹。
我尝试重置为我的第一个提交,但没有文件被恢复。
有什么方法可以从我的主 git 存储库中取回我的更改,还是它们永远丢失了?
有没有办法推送包括子模块在内的所有文件夹?
内部 Git 跟踪文件夹不存在在 s 中,而是列出了一个类似链接的条目,其中包含字母数字,如 SHA 哈希
这些不是子模块,而是简单的 gitlink(索引中的特殊条目(,代表嵌套的 git 存储库 SHA1。
请参阅"嵌套 git 存储库和子模块之间的区别"。
有什么方法可以从我的主 git 存储库中取回我的更改,还是它们永远丢失了?
至少克隆回你的存储库(你推送 gitlinks + 你的代码的那个(:你会在那里找到你的更改。
然后在新的存储库中重新开始,并强制推送。
您有有没有办法让内部存储库(现在是一个链接(到我将代码推送到 Bitbucket 时的状态?
这些内部存储库的 SHA1,希望您有它们的 URL。
因此,在全新的存储库中,添加并提交自己的代码后,这次将这些存储库添加为子模块:
cd /path/to/new/repo
git submodule add -- /url/repo1
cd repo1
git checkout <SHA1>
cd ..
git add repo1 # no trailing slash
git commit -m "add repo1 as submodule"
git push -u origin master
但是,OP确实提到:
我仍然有处于初始状态的文件。但是我所有的更改都是在粘贴的那个中完成的。另一个大错误是,当我创建主存储库时,我唯一的提交是在主存储库上。内部处于初始状态。
在这种情况下(缺少内部 .git 文件夹(,这些机会可能会丢失。