代码之家  ›  专栏  ›  技术社区  ›  James Brooks

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

git
  •  1
  • James Brooks  · 技术社区  · 16 年前

    我克隆了一个 git repo 里面有我的emacs配置文件。我想补充一下 pylookup 在子目录中。正确的方法是什么?

    以下是我能想到的选择。


    1. 如果我把它克隆到 ~/.emacs.d/pylookup/ 并将该文件夹添加到我的emacs repo中,当我执行以下操作时是否会正确更新:

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

      也就是说,当我在其他机器上进行这些更改时,我会有新版本的挂架吗?

    2. 我只是让我的Emacs回购被忽略吗? pylookup/* 在每台机器上更新挂架。如果有一些回购协议和一些机器的话,这会很烦人,但我可以忍受。

    3. 有什么聪明的把戏吗 git submodule . 如果是的话,你能解释一下我不太明白 documentation . 我该如何改变Emacs和幽门。

    4. 我是否使用答案2,但编写一个脚本来更新所有子回购。如果我这样做,我可以在每台机器上运行一次,每次塔架改变。


    几个可能的相关职位。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Ben James    16 年前

    如果创建一个 Git submodule :

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

    假设塔架有一些变化,你想得到它们:

    $ cd pylookup
    $ git pull origin master
    $ cd ..
    $ git add pylookup
    $ git commit -m "Track new commit of pylookup"
    
        2
  •  0
  •   kallsey    14 年前

    我用子树合并和一个类似的问题- 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