Обе директории находятся на одном сервере, поэтому мне не нужно беспокоиться о 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 repo ваши изменения хранятся в ветке master
.Вы можете создать новую ветку с помощью git branch MyNewBranchName
(тогда вы останетесь на master
) или git checkout -b MyNewBranchName
(которая также перемещает вашу рабочую копию в новую ветку).Вы можете узнать ваше текущее имя ветки с помощью git branch
(без каких-либо аргументов), тогда ваша текущая ветка помечается звездочкой перед ней.Когда вам больше не нужна ветка, вы можете удалить ее с помощью git branch -d MyNewBranchName
(что гарантирует, что все коммиты этой ветви будут объединены с другими живыми ветвями) или git branch -D MyNewBranchName
(это удаляет ветку и коммиты, которые не объединеныв другие ветки в конечном итоге теряются во время запуска сборки мусора).
Также большой ресурс о ветвлении - http://nvie.com/git-model.