Как я могу настроить мой .git / config, чтобы иметь возможность передавать / извлекать из нескольких удаленных репозиториев? - PullRequest
6 голосов
/ 16 мая 2010

Хорошо, у меня есть три разных компьютера, с которых я работаю, и сейчас их конфигурации все разные, поэтому мне приходится нажимать определенное количество на каждом, и это очень надоедливо. То, что я хочу сделать, это иметь ОДИН конфигурационный файл, который я могу использовать для всех трех, что позволит мне сделать следующее:

git push unfuddle
git pull heroku
git push unfuddle
git pull heroku

И я новичок в git, так что я знаю, что, может быть, мне нужно heroku master или 'heroku origin' или что-нибудь другое?

Вот как выглядит мой конфигурационный файл прямо сейчас:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@heroku.com:HEROKU-APP.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "unfuddle"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@UNFUDDLE-APP.unfuddle.com:UNFUDDLE-APP/UNFUDDLE-APP.git

Очевидно, что URL-адреса мерзавцев были изменены, чтобы защитить невинных. Что я должен изменить, чтобы я мог легко выдвигать и извлекать оба этих репозитория?

1 Ответ

5 голосов
/ 16 мая 2010

Прежде всего, есть три уровня из конфигурационных файлов :

  • Конфигурация локальная для вашего текущего репо
  • config local для вашего текущего пользователя (домашний каталог)
  • config local для вашей системы

Вы можете определить столько адресов удаленного репо, сколько вам нужно, и вы можете сделать это на уровне пользователя, при условии, что вы синхронизируете этот файл конфигурации с destop на destop

git remote add origin1 git+ssh://remote.location/git/repository1.git
git remote add origin2 git+ssh://remote.location/git/repository2.git
git remote add origin3 git+ssh://remote.location/git/repository3.git

Если эти команды добавляют удаленные адреса только в ваш текущий файл конфигурации repo , вы можете вручную переместить их в текущий файл конфигурации user .

Но для каждого репо вам нужно определить ветку удаленного отслеживания для правильного репо:

git branch --set-upstream master origin1/master

(из Git1.7.0, быстрее, чем два git config branch, которые вы должны были сделать раньше)

Итак, если у вас есть правильный механизм синхронизации (например, dropbox ) для вашего пользовательского конфигурационного файла, у вас все настроено.

...