Статьи

Использование Git как CVS

Сегодня вечером я переместил источники http://rainbowcinemas.ca из phpeclipse и CVS в PDT и Git.

Ниже приведены некоторые полезные советы и рекомендации по первоначальному созданию репо, о том, как поддерживать централизованное удаленное копирование в актуальном состоянии, и как обойти жалобы на обновление мастера напрямую с удаленного компьютера. Я уверен, что есть лучший способ сделать это без необходимости обходного пути, но это то, что я нашел сработавшим.

Начальная настройка

Чтобы просмотреть каталог и создать проект git для каждой подпапки:

for d in $(find . -maxdepth 1 -type d -not -name "." | \
egrep -v ".ssh|logs|OLD|download|upload"); do cd $d; \
git init; git add .; git commit -m "initial commit" .; \
cd ..; \
done

Смотрите также Настройка общего хранилища .

Создать локальный клон с помощью командной строки

git clone ssh: //servername/path/to/.git folderToCreateLocally

Создать локальный клон с eGit

После того, как ваш репо будет создан, вы можете клонировать копию с удаленного сервера на локальном поле, а затем импортировать его в Eclipse (с установленным EGit) с помощью File> Import> Git> Проекты из Git> Clone … .

Зафиксируйте локальные изменения через командную строку

Как указано выше , вы можете использовать git pull , git checkout , git commit и, наконец, git push ваши изменения.

Если вы столкнулись с ошибкой при попытке зафиксировать изменения обратно в репозиторий, см. Раздел ниже: «Разрешить обновление ссылки на текущую извлеченную ветвь не-пустого репозитория».

Фиксируйте локальные изменения с помощью eGit

С eGit вы можете извлекать, выдвигать, извлекать, фиксировать, объединять и т. Д. С помощью контекстного меню в проекте Git или с помощью представления «Синхронизировать». Я не рекомендую использовать какие-либо наборы / модели изменений, кроме Git Change Set, поскольку другие будут показывать больше, чем нужно (например, локальные изменения, которые Git не отслеживает).

Разрешить обновление ссылки на текущую извлеченную ветвь не-пустого хранилища

Обновите файл ~ / .gitconfig на удаленном сервере, чтобы он выглядел примерно так:

[user]
name = Your Name
email = [email protected]
[color]
branch = auto
diff = auto
interactive = auto
status = auto
[core]
editor = vim
[merge]
tool = vimdiff
[receive]
denyCurrentBranch = warn

Получить изменения в удаленном репо

Поскольку я использую удаленный сервер как для размещения http-доступных файлов, так и для размещения git-репо, важно, чтобы изменения, внесенные в git-репо, были затем извлечены в локальную файловую систему, чтобы локальное рабочее пространство синхронизировалось с метаданными репо ,

Чтобы получить изменения, я использую git status (для просмотра изменений), git reset HEAD <имя_файла> (чтобы сбросить указанный файл или пропустить имя файла для сброса всех изменений) и, наконец, git checkout для извлечения измененного файла из репозитория в рабочий каталог. ,

Доступ к серверу без запроса пароля

Чтобы пропустить запрос пароля при подключении через ssh, scp или fish, добавьте свой открытый ключ SSH в файл ~ / .ssh / authorized_keys на удаленном сервере.

Доступ к серверу через псевдоним

Вместо того, чтобы ссылаться на сервер как на имя пользователя @ сервер при подключении, вы можете добавить запись в ваш файл ~ / .ssh / config, которая выглядит следующим образом:

Host shortName
Hostname fully.qualified.domain.name.or.IP.address
User yourUsername
Port 22