2009-12-04 4 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 repo, чтобы игнорировать 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 на каждой машине. –

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

+1

Это так. Спасибо, что подняли голову – Natasha

Смежные вопросы