3 заметки с тегом

git

error: Unable to append to .git/logs/refs/heads/xxx: Permission denied

Проблема возникаем, когда владельцем папок и файлов в корневой директории сайта является не тот пользователь, с помощью которого вы подключаетесь по ssh. В этом случае git будет ругаться примерно следующим образом:

error: Unable to append to .git/logs/refs/heads/bugfix: Permission denied
fatal: Cannot update the ref 'HEAD'.

Это решается командой chown, которая изменяет владельца для всех файлов и папок.

sudo chown -R userID:groupID /path/to/www/dir/

Где userID и groupID — идентификационный номер пользователя и идентификационный номер основной группы пользователя соответственно.

Для просмотра списка пользователей и групп, существующих в системе, достаточно в командной строке ввести:

cat /etc/passwd

Строки в этом файле имеют следующий формат:

account:password:userID:groupID:GID:GECOS:directory:shell

где:

account — имя пользователя
password — зашифрованный пароль пользователя
userID  — идентификационный номер пользователя
groupID — идентификационный номер основной группы пользователя
GECOS — необязательное поле, используемое для указания дополнительной информации о пользователе (например, полное имя пользователя)
directory — домашний каталог ($HOME) пользователя
shell — командный интерпретатор пользователя (обычно /bin/sh)
2017   git   how to   ssh

Git: создать и залить новую локальную ветку в удаленный репозиторий

Обе ниже описаные команды создадут ветку на тот коммит, на котором вы сейчас находитесь. Так что перед созданием, обязательно убедитесь что вы находитесь в той ветке, из которой вы хотите создать новую. Делается это следующим образом:

git status

В ответ должно вывестись следующее:

On branch master

Где master — название ветки, в который вы находитесь на данный момент.


Создаем новую ветку и сразу в нее переходим командой:

git checkout -b develop

Текущая команда является шорткатом к этим двум:

git branch develop
git checkout develop



Публикация в удаленном репозитории:

git push --set-upstream origin develop

Или шорткатом:

git push -u origin develop

Опция —set-upstream позволит сделать ветку develop, на удаленном репозитории, связанной с локальной, а значит и отслеживаемой. Это позволит отправлять/принимать изменения без использования алиасов для сервера и удаленных веток.

2017   git   how to

Git: как удалить или переименовать ветку

Удаление ветки

Удаленный репозиторий:

git push origin --delete <branchName>

Локальный репозиторий:

git branch -d <branchName>

Переименование ветки

git branch -m master old_version

В этом случае ветка master переименуется в old_version.
Не забываем, что в случае, если вы создаете новую ветку со старым названием, то это приведет к проблемам при pull у всех разработчиков, которые продолжали работать над master, поэтому им нужно будет сделать у себя

git reset --hard origin/master
2017   git   how to