我创建了一个新项目,其中包含一些已经有git存储库的文件夹。
编辑:内部git存储库未在网上某处上传,也没有在其中进行提交,仅在主要存储库中
当我为初始提交添加git add --all
的所有文件并将它们推送到bitbucket时,内部git跟踪文件夹不存在于s中,而是列出类似链接的条目,其中包含像sha一样的字母数字哈希像
<folder name> → 031c27df078f [031c27df078f]
经过一些混乱后,我最终删除了我的本地文件,其中包含子模块中的更改和.git子文件夹。
我努力重置为第一次提交,但没有文件被还原。
有没有办法从我的主git repo中恢复我的更改,还是他们永远丢失了?
有没有办法推送所有文件夹,包括子模块?
答案 0 :(得分:2)
内部git跟踪文件夹不存在于s中,而是列出了类似链接的条目,其中包含像sha hash这样的字母数字
那些不是子模块,而是简单的gitlink(special entries in the index)代表嵌套的git repo SHA1。
请参阅“Difference between nested git repos and submodules”。
有没有办法从我的主git repo中恢复我的更改,还是他们永远丢失了?
至少克隆回你的仓库(推送gitlinks +代码的那个):你会在那里找到你的变化。
然后从一个新的回购开始,强制推动。
有没有办法让内部仓库(现在是一个链接)到我将代码推送到bitbucket时的状态?
你有那些内部回购的SHA1,希望你有他们的网址。
所以在您的全新回购中,一旦您添加并提交了自己的代码,这次将这些回购添加为子模块:
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文件夹),这些机会可能会丢失。