### General commands Клонирование репозитория на новый ПК: ```bash git clone ha-server:/путь/к/wiki.git ``` ### 1. Подготовка изменений (локально) перед тем, как отправить код, нужно собрать коммит Проверка статуса: ```bash git status ``` Добавить файлы в очередь: ```bash git add . ``` Сохранить изменения локально с комментарием: ```bash git commit -m "Commit description" ``` ### 2. Обмен данными с сервером Отправка локальных коммитов на сервер: ```bash git push ``` Забрать изменения с сервера ```bash git pull ``` Проверка, произошли ли изменения на сервере ```bash git fetch ``` ### 3. Settings Git on my Server 1. Для работы нужно настроить ssh_config для прямого подключения через ключ ``` bash nano ~/.ssh/config ``` 2. Добавим блок нашего сервера (ключ `id_ed25519` должен быть сгенерирован) ``` bash Host ha-server HostName 89.109.8.114 Port 2202 User emb IdentityFile ~/.ssh/id_ed25519 ``` 3. Добавим публичный ключ `.ssh/id_ed25519.pub` в содержимое `.ssh/authorized_keys` на сервере 4. Теперь можно не использовать логин и пароль при SSH подключении и копировании ```bash ssh ha-server ``` 5. Инициализация git Bare-репозитория на сервере (git уже установлен) ```bash mkdir -p ~/repos/my_project.git cd ~/repos/my_project.git git init --bare ``` ### 4. Settings on work PC 1. Инициализируем Пустой репозиторий и добавляем удаленный репозиторий на Server ```bash git init --bare git remote add origin ha-server:/home/emb/workspace/wiki.git ``` 2. Пуш в репозиторий. Внесение изменений в репозиторий и push на сервер ```bash git add . git commit -m "commit name" git push -u origin master ``` 3. Пулл с репозитория. Начало работы (репозиторий должен быть проинициализирован): ```bash git pull ``` ==При возникновении проблем== Если возникла ошибка `fatal: detected dubious ownership`- владелец папки не совпадает с пользователем необходимо выполнить: ```bash git config --global --add safe.directory /home/emb/workspace/wiki.git ``` 4. Работа с ветками Ветки нужны, чтобы делать новые фичи, не ломая основной код: - **`git branch`** — список всех веток. - **`git checkout -b имя_ветки`** — создать новую ветку и перейти в нее. - **`git checkout master`** — вернуться на главную ветку. - **`git merge имя_ветки`** — влить изменения из другой ветки в текущую. 5. Полезные мелочи - **`git log`** — посмотреть историю всех коммитов (кто, когда и что сделал). - **`git diff`** — увидеть конкретные изменения в строках кода до коммита. - **`git remote -v`** — проверить, к какому серверу привязан твой локальный Git. --- ### Настройка зеркалирования репозиториев