如何组合两个单独的Git存储库?

时间:2009-12-04 13:56:45

标签: git

我克隆了一个git repo,其中包含我的emacs配置文件。我想在子目录中添加pylookup。这样做的正确方法是什么?

以下是我能想到的选项。


  1. 如果我将其克隆到~/.emacs.d/pylookup/并将该文件夹添加到我的emacs仓库中,那么当我这样做时,它会正确更新:

    cd ~/.emacs.d/pylookup/
    git pull
    cd ~/.emacs.d
    git commit -a -m "updates to pylookup"
    git push
    

    即。当我在其他机器上提取这些更改时,我会有新版本的pylookup吗?

  2. 我是否只是让我的emacs repo忽略pylookup/*并在每次更新pylookup时在每台机器上更新它。如果有一些回购和几台机器,这会很烦人,但我可以忍受它。

  3. 是否有一些git submodule的智能技巧。如果是这样,你能提供一个解释,我真的不明白documentation。我如何为emacs和pylookup提取更改。

  4. 我是否回答2但是制作一个脚本来更新所有子回购。如果我这样做,每次pylookup改变时我都可以在每台机器上运行一次。


  5. 几个可能相关的帖子。

2 个答案:

答案 0 :(得分:5)

如果您创建Git submodule

$ git submodule add git://github.com/tsgates/pylookup.git pylookup
$ git submodule init pylookup
$ git submodule update pylookup

让我们说pylookup有一些变化,你想得到它们:

$ cd pylookup
$ git pull origin master
$ cd ..
$ git add pylookup
$ git commit -m "Track new commit of pylookup"

答案 1 :(得分:0)

我使用了与类似问题的子树合并 - http://git-scm.com/book/en/Git-Tools-Subtree-Merging。类似的东西:

$ git remote add -f pylookup /path/to/pylookup
$ git merge -s ours --no-commit pylookup/master
$ git read-tree --prefix=pylookup/ -u pylookup/master
$ git ci -m "merging pylookup into pylookup subdirectory"

这里的好指南:http://jasonkarns.com/blog/merge-two-git-repositories-into-one