Пара вопросов по git.

В настоящее время я единственный пользователь и успешно выполняю несколько базовых команд в своем репозитории, и я доволен тем, как все выглядит. Однако я хочу, чтобы разные пользователи могли управлять репозиторием и вносить в него изменения. Я читал кое-что о толкании / вытягивании и т. Д. Но еще не совсем понимаю. Могу ли я посоветовать, что читать, если я хочу этого добиться:

[каталог-релизов] например: / release / live

[разработчик1] например: / developers / developer1 [разработчик2] например: / developers / developer2

Допустим, разработчик работает в своем каталоге, а затем хочет сделать свою версию окончательной. Ему нужно «подтолкнуть» свою промежуточную зону к «/ release / live»? Кроме того, что, если он выдвинул версию, которая все испортила. Как я могу вернуться? Также в какой ветке хранится контент? О каких разрешениях мне нужно позаботиться, чтобы разработчик1 мог нажимать на каталог выпуска? Оба каталога находятся на одном сервере, поэтому мне не нужно беспокоиться о SSH или чем-то подобном.

git
2
g1t 7 Дек 2010 в 19:19

2 ответа

Лучший ответ

Оба каталога находятся на одном сервере, поэтому мне не нужно беспокоиться о SSH или чем-то подобном.

Когда все находится на одном сервере, вам нужен один пустой репозиторий (git init --bare), куда каждый разработчик может помещать свои изменения (= доступен для записи всем пользователям). Попадание в репозиторий, отличное от чистого, вызывает проблемы.

[Я предполагаю, что ваш сервер работает под управлением linux / bsd / macos]. Когда ваши пользователи являются разными пользователями unix, вам нужно не только chmod g+w репозиторий, но и установить липкий бит для всех каталогов (что означает, что вновь созданные каталоги также наследуют биты разрешений, иначе первый созданный пользователем каталог, скорее всего, будет 755, что означает, что никакой другой пользователь не может создавать файлы в этом каталоге).

Допустим, разработчик работает в своем каталоге, а затем хочет сделать свою версию окончательной. Ему нужно «подтолкнуть» свою промежуточную зону к «/ release / live»?

Типичный рабочий процесс заключается в том, что разработчик помещает изменения в общий репозиторий, а затем эти изменения передаются в /release/live с помощью git pull из /release/live. (Вы также можете автоматизировать этот шаг с помощью ловушки в общем репозитории).

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

Кроме того, что, если он выдвинул версию, которая все испортила. Как я могу вернуться?

Вы всегда можете git checkout старую версию вашего проекта. Также есть команда git revert, которая отменяет изменения данной фиксации.

Также в какой ветке хранится контент?

Когда вы запускаете новое репозиторий git, ваши изменения сохраняются в ветке master. Вы можете создать новую ветку с помощью git branch MyNewBranchName (тогда вы остаетесь на master) или git checkout -b MyNewBranchName (что также перемещает вашу рабочую копию в новую ветку). Вы можете узнать о своем текущем имени ветки с помощью git branch (без каких-либо аргументов), тогда ваша текущая ветка будет отмечена звездочкой перед ней. Когда вам больше не нужна ветка, вы можете удалить ее с помощью git branch -d MyNewBranchName (что гарантирует, что все коммиты этой ветки будут объединены с другими живыми ветвями) или git branch -D MyNewBranchName (это удаляет ветку и фиксирует которые не объединяются с другими ветвями, в конечном итоге теряются во время выполнения сборки мусора).

Также отличный ресурс о ветвлении - http://nvie.com/git-model.

1
Rudi 7 Дек 2010 в 20:07
Ах, это, должно быть, заняло время, чтобы описать Руди. Огромное спасибо! Собираюсь перечитать и переварить информацию. Хотя я знаю некоторые из упомянутых вами команд ... но тем не менее, потрясающий ответ!
 – 
g1t
7 Дек 2010 в 20:37

Хорошее место для начала изучения рабочих процессов (и более глубокого знакомства с Git в целом) - это книга git pro Книга О'Рейли тоже великолепна; Я очень рекомендую.

Чтобы предотвратить «лажание», я бы рекомендовал копать глубже и чувствовать себя более комфортно с помощью ветвления и тегирования.

Чтобы предотвратить доступ нежелательных разработчиков к определенным ветвям (например, к вашей ветке release), рассмотрите возможность использования gitolite.

Удачи.

0
brycemcd 7 Дек 2010 в 19:57
Спасибо, Брайс, я прочту. Собираюсь немного занять меня!
 – 
g1t
7 Дек 2010 в 21:10