Пара вопросов по git.
В настоящее время я единственный пользователь и успешно выполняю несколько базовых команд в своем репозитории, и я доволен тем, как все выглядит. Однако я хочу, чтобы разные пользователи могли управлять репозиторием и вносить в него изменения. Я читал кое-что о толкании / вытягивании и т. Д. Но еще не совсем понимаю. Могу ли я посоветовать, что читать, если я хочу этого добиться:
[каталог-релизов] например: / release / live
[разработчик1] например: / developers / developer1 [разработчик2] например: / developers / developer2
Допустим, разработчик работает в своем каталоге, а затем хочет сделать свою версию окончательной. Ему нужно «подтолкнуть» свою промежуточную зону к «/ release / live»? Кроме того, что, если он выдвинул версию, которая все испортила. Как я могу вернуться? Также в какой ветке хранится контент? О каких разрешениях мне нужно позаботиться, чтобы разработчик1 мог нажимать на каталог выпуска? Оба каталога находятся на одном сервере, поэтому мне не нужно беспокоиться о SSH или чем-то подобном.
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.
Хорошее место для начала изучения рабочих процессов (и более глубокого знакомства с Git в целом) - это книга git pro Книга О'Рейли тоже великолепна; Я очень рекомендую.
Чтобы предотвратить «лажание», я бы рекомендовал копать глубже и чувствовать себя более комфортно с помощью ветвления и тегирования.
Чтобы предотвратить доступ нежелательных разработчиков к определенным ветвям (например, к вашей ветке release), рассмотрите возможность использования gitolite.
Удачи.
Похожие вопросы
Новые вопросы
git
Git — это распределенная система контроля версий с открытым исходным кодом (DVCS). Используйте этот тег для вопросов об использовании Git и рабочих процессах. Не используйте этот тег для общих вопросов по программированию, связанных с репозиторием Git. Не используйте этот тег для вопросов GitHub/GitHub Actions, не связанных с использованием git; вместо этого используйте [github] или [github-actions]. Не используйте тег [github] для проблем, связанных с Git, только потому, что репозиторий размещен на GitHub.