Git push to origin master кажется успешным, но ничего не меняется - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь переместить в удаленный пустой репозиторий.Я успешно выполняю локальные коммиты, но всякий раз, когда я нажимаю на origin / master, изменения не отражаются в удаленном репо.

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

$ git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 360 bytes | 360.00 KiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
To <remote/path>
   3a25c0d..fc7b327  master -> master

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Редактировать: я считаю, что ветвь fix-detached-HEAD была чем-то, что я создал в попыткеРешите это после некоторого поиска в Google.

$ git remote -vvv
origin  <remote path> (fetch)
origin  <remote path> (push)


$ git branch -vvv
  fix-detached-HEAD 47f1938 <commit message 1>
* master            fc7b327 [origin/master] <latest commit message>

Редактировать: Подтверждение удаленного доступа:

$ git rev-parse --is-bare-repository
true

Ответы [ 4 ]

2 голосов
/ 20 сентября 2019

Основываясь на комментариях, вы просматриваете некоторые файлы на пульте, которые не являются частью вашего репо или частью отдельной проверки.Это объясняет, почему они не обновляются, потому что вы обновляете пустое хранилище с объектами на удаленном компьютере, а не с файлами, которые вы просматриваете.

Если вы хотите, чтобы git push фактически развернул файлы на удаленном сервересервер, один из способов сделать это - установить ловушку на удаленном сервере, как описано в по этой ссылке :

Create Hook

Hook - это программа, которую вы можете поместить в каталог hooks для запуска действий в определенных точках выполнения git.

Git hasнесколько хуков, которые он может вызывать после разных этапов автоматически.Вы будете использовать хук post-receive, который вызывается после того, как ваш репозиторий получил отправленный код.

После инициализации вашего git-репозитория новые папки должны появиться в /var/repo/website.git/.Перейдите к перехватчикам и создайте новый bash, названный post-receive, используя предпочитаемый вами текстовый редактор.

cd перехватывает nano post-receive

Внутри нового файла вы должны указать git, где:положить файлы нажал.Для этого вставьте следующий код:

#!/bin/sh

git --work-tree=path_to_website_folder --git-dir=path_to_git_directory checkout -f name_of_branch

замените path_to_website_folder на правильный путь / var / www / website_folder, который мы создали в точке3. замените path_to_git_directory на путь к пустому git-репозиторию, в данном случае это /var/repo/website.git.name_of_branch - необязательный параметр.Если он не указан, по умолчанию используется master.

Вы можете использовать этот сценарий для любых других команд по вашему выбору, например, для перезапуска сервера.

Выйдите из редактора, используя ctrl + x, иОбязательно сохраните файл как пост-получение.

Сделать сценарий исполняемым

Чтобы операционная система могла выполнить сценарий, последняя должна иметь права на выполнение.Для этого выполните следующую команду:

chmod +x post-receive

Работа на вашем сервере завершена.Теперь вы можете выйти из системы, просто запустив logout и нажав Return

1 голос
/ 20 сентября 2019

Исходя из нашего чата , в конечном итоге проблема заключается в том, что вы настраиваете пульт странным образом, сначала копируете в него файлы с исходным кодом, запускаете git init, а затем конвертируете его в голый (иклонирование в местные).Однако кажется, что вы забыли удалить файлы при конвертации в голые, поэтому, когда вы нажали и ожидали, что они будут обновлены, они не были.Git игнорирует ошибочные файлы в голом хранилище, но продолжает обновлять объекты и другие компоненты.(Как отмечалось jthill в комментариях , толчки были получены на основе ревизии 2 вопроса.)

Если вы действительно это делаетехотите, чтобы ваши файлы исходного кода существовали на удаленном компьютере, см. eis 's answer , но это более продвинутое использование, и, как новичок, вы, вероятно, захотите просто обычное репо.Чтобы избежать путаницы в будущем, я мог бы предложить удалить существующий пульт и начать заново, но сначала сделайте резервную копию.

0 голосов
/ 20 сентября 2019

Ваши результаты показывают, что вы фактически не отправляете в удаленный репозиторий.

$ git remote -vvv
<no results - blank>

Вам необходимо добавить апстрим.

git remote add origin git@github.com:username/repo.git

Затем снова проверьте git remote -v.Вы должны увидеть что-то вроде

origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)

Когда вы нажмете сейчас, оно должно перейти в это место.

Возможно, вам также придется выполнить

git push --set-upstream origin master

в первый раз.

0 голосов
/ 20 сентября 2019

Вместо "git push" попробуйте "git push -u origin master" в этом -u означает обновление, возможно, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...