Как я могу перевести понятия ствола / ветви от Subversion до Git? - PullRequest
17 голосов
/ 14 мая 2010

Так что я не большой эксперт по контролю версий, я использовал Subversion для проектов в прошлом. Я должен использовать Git для конкретного проекта (клиент предоставил Git-репо).

Мой рабочий процесс таков, что я буду работать с файлами с двух разных компьютеров, и часто мне нужно проверять нестабильные изменения при перемещении с места на место, чтобы я мог продолжить свою работу. Затем происходит, когда, скажем, клиент идет за последней версией, он также загружает нестабильный код.

В SVN вы можете решить эту проблему путем создания транка и использования рабочих ветвей или использования транка в качестве рабочей версии и создания стабильных ветвей.

Какова эквивалентная концепция в Git, и есть ли простой способ сделать это через GitHub?

Ответы [ 2 ]

17 голосов
/ 15 мая 2010

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

Очень простой пример - выполнять нестабильную работу только в частной ветке и называть это чем-то очевидным, например, unstable-development. Вот как это сделать с нуля. Во-первых, давайте сделаем новый репо с сайта вашего клиента, который я назову «secret-sauce».

$ git clone git://example.com/repositories/secret-sauce.git

Вы по-прежнему на ветке master, по умолчанию. Давайте создадим новую ветку, чтобы вы могли фиксировать вещи там вместо master.

$ git branch unstable
$ git checkout unstable
Switched to branch 'unstable'

Хорошо. Теперь давайте добавим нестабильный код:

$ touch kablammo.txt
$ git add *
$ git commit -m "Added unstable code."
[master (root-commit) 9428aef] Initial checkin.
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 kablammo.txt

Прямо сейчас, unstable существует только на вашей стороне. Обратите внимание, что когда мы клонировали, мы получили удаленный репозиторий с именем origin, который имеет соответствующую ветку master. Когда ваш локальный репозиторий узнает о ветвях удаленного репозитория, мы называем это «ветвью отслеживания». Вы можете видеть все свои удаленные ветви отслеживания с git branch -r:

$ git branch -r
  origin/HEAD -> origin/master
  origin/master

Хорошо. Давайте отодвинем наши изменения назад!

$ git push origin unstable

Вот и все - наши изменения теперь находятся в ветке unstable на удаленном репо. Если мы хотим узнать, чем заняты люди в ветке master, мы можем снова переключиться обратно с помощью git checkout master.

9 голосов
/ 14 мая 2010

Я считаю это ценным ресурсом: Модель успешного ветвления Git

В отличие от SVN, git децентрализован. Вам не нужно загружать нестабильный код в хранилище вашего клиента. Вы можете просто вытащить нестабильный код на ваш второй компьютер с первого.

Сказав это, git отлично справляется с ветвлением и должен быть неотъемлемой частью любой методологии, которую вы в конечном итоге используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...