Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

git config для нескольких разработчиков

#git


Начинаю изучать гит, репозиторий использую битбакет, сразу возник вопрос:

Например подключился к боевому сайту по ssh, сделал git init в нужной директории.
Настраиваю git config user.email и git config user.name

Далее все мои действия будут фиксироваться с этими данными (я правильно понимаю?).

Далее, мой коллега подключится к этому же проекту через ssh, и прописывает git config
user.email и видит мой email. 

Соответственно его действия будут фиксироваться под моими данными? Как сделать чтобы
у него был свой user name и email? Если он пропишет свои данные через git config user.email,
то перезапишет мои.

Что я не так понял?
    


Ответы

Ответ 1



хотя вопрос и продиктован несколько неверным пониманием того, что же такое есть система управления версиями, и по этому поводу уже дан замечательный ответ, но… но иногда (пусть и редко) случается необходимость работать с git-хранилищем двум и более пользователям из-под одной и той же учётной записи (подключаясь к машине по протоколу ssh). как в такой ситуации пользователям передать команде commit разные данные (имя и почтовый адрес) о себе? для этого можно, например, использовать переменные окружения. их четыре и все они должны иметь значения (тогда и только тогда программа git ими воспользуется при выполнении команды commit): export GIT_AUTHOR_NAME="ваше имя" export GIT_AUTHOR_EMAIL="ваш@адр.ес" export GIT_COMMITTER_NAME="${GIT_AUTHOR_NAME}" export GIT_COMMITTER_EMAIL="${GIT_AUTHOR_EMAIL}" эти команды имеет смысл каждому из пользователей добавить в «ресурсный файл» своей оболочки. в случае, например, программы bash — это ~/.bashrc. чтобы они при подключении «попали» в экземпляр оболочки, запускаемый на удалённой машине, нужно: в конфигурации локальной программы ssh указать их отправку, добавив где-нибудь в начале файла ~/.ssh/config строку: sendenv GIT_* в конфигурации удалённой программы sshd указать их приём, добавив в файл /etc/ssh/sshd_config строку (программу надо будет после этого перезапустить): acceptenv GIT_* доп. чтение: man git-config man git-commit-tree man ssh_config man sshd_config

Ответ 2



есть понятия: репозиторий (у вас битбакет) и локальный репозиторий (который находится на вашем компе и доступен под вашим аккаунтом) в собственно репозитории никто напрямую не правит. код вы правите на своем локальном компьютере. и настраиваете git config user.email, git config user.name на локальном. первое, что вы должны сделать - клонировать к себе в локальный репозиторий файлы из общего битбакета. далее даете команду развернуть сами файлы из локального репозитория. далее правите файлы в локали. потом даете команду гиту, чтобы ваши измененные файлы сначала записал в локальный репозиторий (здесь то конфиг юзера и действует). в конце даете команду гиту, чтобы он синхронизировал локальный и общий репозиторий. некоторые действия выполняются гитом в одну команду.

Ответ 3



Если вы на своей машине, находясь в папке репозитория введете git config user.name "UserName" - эта настройка сохранится в настройках вашего репозитория. Но вы не сможете это закоммитить и потом запушить на удаленный сервер. Настройки не коммитятся, они есть только в вашем репозитории и никак не могут попасть на компьютер к вашему коллеге. Но судя по вашему вопросу вы как-то нестандартно используете гит. Похоже вы по очереди работаете с одной и той же машины. С гитом обычно работают так - есть центральный репозиторий, на сервере, в Bitbucket например. Разработчик, который хочет что-то в этот репозиторий закоммитить, клонирует репозиторий на свою машину, настраивает свое имя и почту (и эти настройки он никак не может отправить в центральный репозиторий, они есть только в его копии), потом что-то меняет, коммитит и вот этот коммит он уже может отправить в центральный репозиторий (git push) что-бы его увидели остальные разработчики.

Комментариев нет:

Отправить комментарий