2009-12-04 37 views
1

我已经克隆了一个git repo,其中有我的emacs配置文件。我想在子目录中添加pylookup。什么是正确的方法来做到这一点?如何组合两个单独的Git存储库?

以下是我能想到的选项。


  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回购忽略pylookup/*,并在每次更新pylookup时在每台机器上进行更新。如果有几个回购和几台机器,这会让人讨厌,但我可以忍受它。

  3. 是否有一些巧妙的技巧与git submodule。如果是的话,你可以提供一个解释,我并不真正了解documentation。我将如何修改emacs和pylookup。

  4. 我会用答案2去,但做一个脚本来更新所有的子回购。如果我这样做了,每次pylookup更改时,我都可以在每台机器上运行一次。


夫妇的可能相关的职位。

回答

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" 
+0

很好的回答。当我执行emacs更改时,在其他计算机上会发生什么情况。即我必须在每台机器上更新pylookup。 – 2009-12-04 14:17:35

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

+0

“git ci”是git commit的别名吗?最好避免使用非标准别名。 – dxvargas 2013-05-31 13:46:40

+1

是。感谢您的高举 – Natasha 2014-08-02 13:59:34