Назад | Перейти на главную страницу

Push работает, но без изменений в удаленном репозитории

Я размещаю git-сервер на моем сервере Debian Stretch в каталоге /var/www/example.com/html.

Я могу отправить файлы на этот сервер на моем локальном компьютере, если я сначала клонирую репозиторий git, сделав это на моем локальном компьютере с Windows 10:

C:\Users\User\Desktop\AnotherRepoTest\test>git clone git@IP_Of_Remote_server:/var/www/example.com/html/repo.git
Cloning into 'repo'...
git@IP_Of_Remote_server's password:
remote: Counting objects: 20, done.
Receiving objects: 100% (20/20), 2.30 KiB | 1.15 MiB/s, done.
remote: Compressing objects:  75% (9/12)   Resolving deltas: 100% (4/4), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 20 (delta 4), reused 0 (delta 0)

C:\Users\User\Desktop\AnotherRepoTest\test>

Это работает, и он получает файлы из репо, но если я создам новый файл, а затем отправлю этот файл в главную ветку, удаленный сервер не будет отображать этот новый файл в каталоге удаленного репо.

C:\Users\User\Desktop\AnotherRepoTest\test>cd repo

C:\Users\User\Desktop\AnotherRepoTest\test\repo>echo "Hello, world." > AddThisFile.txt

C:\Users\User\Desktop\AnotherRepoTest\test\repo>git add --all

C:\Users\User\Desktop\AnotherRepoTest\test\repo>git commit -m "New Commit"
[master e5a21b6] New Commit
 1 file changed, 1 insertion(+)
 create mode 100644 AddThisFile.txt

C:\Users\User\Desktop\AnotherRepoTest\test\repo>git push -u origin master
git@IP_Of_Remote_server's password:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 292 bytes | 292.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To IP_Of_Remote_server:/var/www/example.com/html/repo.git
   78da987..e5a21b6  master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

C:\Users\User\Desktop\AnotherRepoTest\test\repo>

Как видите, все прошло как положено. Теперь, если мы проверим каталог репозитория удаленного сервера, этот новый текстовый файл не будет добавлен в /var/www/example.com/html/

Но если я снова клонирую репо в другой папке на моем локальном компьютере, этот текстовый файл будет клонирован.

Проблема в том, что я не могу найти этот файл в удаленном каталоге. Даже когда я бегу:

root@ohwell:/var/www# locate AddThisFile.txt
root@ohwell:/var/www#

Я предоставил пользователю git только доступ к оболочке git и имею правильные разрешения для каталога / var / www. Я даже перезагрузил сервер, чтобы посмотреть, внесены ли изменения, но безуспешно. Почему я не могу найти этот файл на удаленном сервере? Что мне не хватает?

Я установил голое репо, следуя этим руководствам:

https://www.linux.com/learn/how-run-your-own-git-server

https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server

  • locate использует базы данных, которые не могут быть обновлены
  • Вам нужно, чтобы ваш сервер каким-то образом извлекал изменения после того, как вы отправили их в репо.