0

我的代码库有一个 repo,每个项目都继承了这个代码库。它上面有子模块,一切正常。

当我从头开始一个新项目时,应该如何克隆这个 repo(只有 master 分支)和只有 HEAD(因为我不希望每个项目都有很多基础提交)。

我试过:

    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'

我错过了什么?

4

2 回答 2

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甚至会剥夺与过去的纪录片链接。

于 2013-04-04T18:22:23.727 回答
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
于 2013-04-04T18:11:23.280 回答