只获取一个分支的头部并推送到Git上的空回购

时间:2013-04-04 17:54:53

标签: git

我的代码库有一个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'

我缺少什么?

2 个答案:

答案 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