Как добавить под git изменения, которые были сделаны напрямую на сервере
На сервере размещен проект под управлением git. Были внесены изменения в файлы не через git, а напрямую (например, через sftp, ftp, ssh и т. п.). Далее инструкция, как эти изменения добавить под git, не потеряв их.
К примеру, при вводе команды
git status
вы видите, что один или несколько файлов модифицированы:
Создаем отдельную ветку и переходим на нее
Для этого выполняем команду:
git checkout -b <название ветки>
В результате мы должны получить сообщение о переходе на новую ветку:
Switched to a new branch '<название ветки>'
Добавляем измененные файлы под git
Для этого можно выполнить команду с перечислением файлов, которые нам нужно добавить (необходимо в случае, если есть еще какие-либо локальные файлы, которые не нужно добавлять под git. Это можно понять по команде «git status», например, на скриншоте выше лишних файлов нет). Команда:
git add <путь к файлу 1> <путь к файлу 1> <путь к файлу 3>
Путь к файлам определяется относительно корня репозитория. Его можно взять из первоначальной команды «git status».
Если же лишних локальных файлов нет, тогда выполняем команду:
git add -A
Добавятся все файлы, которые были перечислены в ходе вывода команды «git status».
Если добавили лишний файл, то удалить его из индекса можно командой:
git rm --cached <имя файла>
Делаем commit и push изменений в удаленную ветку
Для commit выполняем команду:
git commit -m "<описание коммита>"
Мы должны получить сообщение об успешном commit. Примерный вид:
Проверяем, что все изменения теперь на ветке:
git status
Должны получить сообщение вида:
Выполняем команду для push:
git push origin <название ветки>
Мы должны получить сообщение вида:
Делаем merge ветки в master
Теперь переходим в ваш удаленный репозиторий. В моем случае это bitbucket.org. Создаем pull request из ветки, в которую вы делали push на предыдущем шаге (это необходимо, если у вас merge в master доступен только через pull request), проверяем. что все корректно и делаем merge.
Возвращаемся на ветку master на сервере
Для этого выполняем команду:
git checkout master
Мы должны получить сообщение о переходе на ветку master.
Выполняем команду, чтобы «стянуть» с удаленного master актуальные изменения:
git pull origin master
Получим сообщение об успешном «стягивании». Примерный вид:
После этого проверяем, что сейчас локальный репозиторий на сервере актуальный и смотрит на ветку master. Выполняем команду:
git status
Мы должны получить следующее сообщение.