Git подталкивает к не-голому репо, сохраняет текущее рабочее дерево
Как я могу перенести в не-пустой репозиторий git, автоматически добавить и зафиксировать любые изменения в рабочем дереве, а затем повторно извлечь текущую ветку, чтобы отразить изменения от этого толчка?
Я думал о чем-то вроде этого:
Добавьте крючок на пульте (репозиторий non-bare) для запуска git add . && git commit -m "Automated commit" && git reset --hard
Есть ли недостатки этого метода? Есть ли другой способ сделать это?
(Отказ от ответственности: я знаю, что это не самая идеальная ситуация, но это то, что мы имеем в моей компании, и я хочу сделать ее максимально упорядоченной, не требуя, чтобы все полностью изменили то, как они работают)
Спасибо!
1 ответ
После возни я нашел довольно хорошее решение.
Предварительный прием: проверяет любые изменения в рабочем каталоге, добавляет / фиксирует их, затем предупреждает пользователя о необходимости слияния перед нажатием
#!/bin/sh
cd ../
unset GIT_DIR
CHANGED=$(git diff-index --name-only HEAD --)
if [ -n "$CHANGED" ]; then
git add -u .
git commit -m "Automated commit"
echo "There were uncommitted changes in the working directory...please pull them and push your changes again"
exit 1
fi
Хук после получения: принудительно извлекает текущую ветку, поэтому изменения будут показаны в рабочем каталоге. Это перезапишет любые изменения в рабочем каталоге, но они уже были добавлены / зафиксированы / объединены хуком предварительного получения.
#!/bin/sh
cd ../
unset GIT_DIR
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
git checkout -f $branch
echo "Update pushed to branch $branch and checked out in the website directory"