我的代码库有一个repo,每个项目都继承了这个代码库。 它上面有子模块,一切正常。
当我从头开始一个新项目时,应该如何克隆这个repo(只有主分支)和只有HEAD(因为我不希望每个项目都有很多基础提交)。 / p>
我试过了:
git init
git remote add -t origin URLtoProjectRepo
git remote add -t codebase URLtoMainCodeBase
git pull codebase master --depth=1
当我尝试将其推送到项目回购时,我得到:
[remote rejected] master -> master (missing necessary objects)
error: failed to push some refs to 'ProjectURL'
我缺少什么?
答案 0 :(得分:3)
您无法推送不完整的历史记录,但无需提交历史记录:
git fetch --depth=1 git://wherever master
git checkout -B master $(git cat-file -p FETCH_HEAD|git commit-tree FETCH_HEAD^{tree})
会给你一个相当难看的提交消息,其中包含原始历史链接作为文本;将|sed 1,/^$/d
放在那里将会删除与过去的纪录片链接。
答案 1 :(得分:0)
我遇到了类似的问题需要解决。我有一个基本存储库,它本质上是许多其他项目的核心代码。其他项目首先拉出核心存储库,然后将其检入新项目存储库。通过这样做,任何时候对核心仓库进行更改,我们都可以轻松地将更改合并到我们的项目中。作为git的新手,这是我在研究这篇文章时学到的结果。我从用于自动化过程的perl脚本中取出了这个。这对我很有效。希望它可以帮到你。
git init
git remote add origin new_repo
git add .
git commit -m 'initial commit'
git push origin master
git remote add base base_repo
git checkout -b base
git pull base master
git checkout master
git merge base
git push origin master
git branch -d base