Как добавить под git изменения, которые были сделаны напрямую на сервере
На сервере размещен проект под управлением git. Были внесены изменения в файлы не через git, а напрямую (например, через sftp, ftp, ssh и т. п.). Далее инструкция, как эти изменения добавить под git, не потеряв их.
К примеру, при вводе команды
git status
вы видите, что один или несколько файлов модифицированы:
![](https://ilovecode.ru/pictures/Snimok_ekrana_2021-09-01_v_13_20_48.png)
Создаем отдельную ветку и переходим на нее
Для этого выполняем команду:
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. Примерный вид:
![](https://ilovecode.ru/pictures/Snimok-ekrana-2021-09-01-v-13.58.34.png)
Проверяем, что все изменения теперь на ветке:
git status
Должны получить сообщение вида:
![](https://ilovecode.ru/pictures/Snimok-ekrana-2021-09-01-v-14.00.26.png)
Выполняем команду для push:
git push origin <название ветки>
Мы должны получить сообщение вида:
![](https://ilovecode.ru/pictures/Snimok_ekrana_2021-09-01_v_14_02_09.png)
Делаем merge ветки в master
Теперь переходим в ваш удаленный репозиторий. В моем случае это bitbucket.org. Создаем pull request из ветки, в которую вы делали push на предыдущем шаге (это необходимо, если у вас merge в master доступен только через pull request), проверяем. что все корректно и делаем merge.
Возвращаемся на ветку master на сервере
Для этого выполняем команду:
git checkout master
Мы должны получить сообщение о переходе на ветку master.
Выполняем команду, чтобы «стянуть» с удаленного master актуальные изменения:
git pull origin master
Получим сообщение об успешном «стягивании». Примерный вид:
![](https://ilovecode.ru/pictures/Snimok_ekrana_2021-09-01_v_14_18_55.png)
После этого проверяем, что сейчас локальный репозиторий на сервере актуальный и смотрит на ветку master. Выполняем команду:
git status
Мы должны получить следующее сообщение.
![](https://ilovecode.ru/pictures/Snimok_ekrana_2021-09-01_v_14_21_52.png)