Я хотел бы использовать Мерзавца для своей собственной цели, и я должен использовать репозиторий Подверсии в своей компании. Я знаю, что существует 'мерзавец svn' команда, но она требует lineral истории также в репозитории мерзавца. Проблема с этим состоит в том, что я хотел бы: - для синхронизации репозитория мерзавца с другим моим репозиторием мерзавца на моем удаленном диске так, чтобы я мог синхронизировать его с другим репозиторием мерзавца на другом компьютере, - и самое важное: Я хотел бы фиксировать часто в моем репозитории мерзавца и когда я решаю, что это, которое небольшие шаги стоят для фиксации (достаточно большой для совместного использования), я хотел бы фиксировать их svn, но только с одной фиксацией... Таким образом, я не хотел бы показывать всему моему мерзавцу (mayby иногда глупые, слишком маленькие фиксации только для запоминания чего-то) в svn, - и с 'мерзавцем svn', я не могу использовать ответвления (потому что, когда я объединяю их с ведущим устройством, у ведущего устройства не будет lineral истории).
Помогите... Возможно, существует некоторый рабочий процесс, в котором я могу использовать мерзавца в, он - полная слава и svn для фиксации больше (не мое 'частное'..., возможно, очень небольшие изменения и который в течение некоторого времени casue, что треска не компилирует), изменения в моем репозитории компании.
Заранее спасибо!
Я хотел бы синхронизировать репозиторий Git с другим моим репозиторием GIT на моем удаленном диске, чтобы я мог синхронизировать его с другим репозиторием Git на другом компьютере.
Попробуйте:
git remote add external-repo ssh://host/path/to/git/repo.git
git push origin external-repo
Я хотел бы часто посещать в моем репозитории Git, и когда я решаю, что эти маленькие шаги стоит совершить (достаточно большие, чтобы поделиться), я хотел бы совершить их в SVN, но только с одним коммитаром.
Нет пота. Свернуть несколько коммитов с GIT REBASE -I
(это называется «сквошным») и решить, хотите ли вы сохранить, выбросить или сквош каждый коммит в более крупный. Это очень полезно для того, чтобы быть организованным, прежде чем подталкивать на внешнее репо. -I
предназначен для «интерактивного» режима.
С «GIT SVN» я не могу использовать ветви (потому что, когда я объединяю их с мастером, мастер не будет иметь линию линию).
Это не правда. Просто установив ветку на Git
для каждой ветви, которую вы хотите отслеживать с SVN
. В противоположном направлении вы в любом случае выталкиваете одну ветку.
Вместо интерактивной ребазы вы также можете использовать Git Merge --squash
на "официальном" филиале.
git checkout master
git merge --squash development
Это имеет преимущество, что он не разрушит вашу историю развития. Теперь вы можете создать большой коммит, содержащий все ваши изменения, или вы можете сбросить индекс (с использованием RESET
) и использовать Git Add -p
или GIT GIT
Чтобы создать любое количество отдельных коммит от вашего ветви, которое вы бы вы могли бы нормально посчитать Master
и GIT-SVN DCommit
их при необходимости.
Что я делаю (и самый простой способ сделать это) - не пытаться управлять двумя методами контроля источника одновременно. Я использую Git для моего собственного контроля версий. Несколько раз в неделю, когда я готов совершить центральный репозиторий, я проверяю мастерскую ветви в Git и зафиксировать его на TFS. Изменения с сервера проверяются в мою ветку Dev и объединились в мой код.
Это не элегантно, по любому средствам, но поскольку я только проверю / регистрацию от центрального репо, несколько раз в неделю, он отлично работает.
Я постоянно так работаю в своей компании (на самом деле больше не выношу подрывной деятельности). Почему ты думаешь, что не можешь использовать ветки с git svn? Вы не только можете использовать их, но и совершать коммиты из них прямо обратно в субверсию.
Для слияния коммитов вы используете что-то вроде git'овского ребазинга удалённых/магистральных - интерактивных
и сквош-коммитов вместе. Однако вы не можете одновременно поддерживать и расширенную версию, и сокращённую. Вы либо получаете все крошечные коммиты, либо получаете сжатые.