Я работаю над сайтом и использую git для контроля версий. Я настроил сервер для тестирования, создал git голое хранилище и выдвинул основную ветку (git push staging master
).
Я получил ошибку - я забыл установить разрешения для папки назначения должным образом. Я установил разрешения, попытался нажать еще раз ... но git сказал, что все было в курсе. Добавление флага -f не имеет никакого значения. Так что, поскольку это была бесплатная sh pu sh, я удалил голое репо, настроил его снова, и все заработало.
В конце концов, я создал новую ветку для функций, которые я собираюсь протестировать, прежде чем слиться с производственная отрасль. Затем я сделал несколько исправлений ошибок в производственной ветке, поэтому я перебрал тестовую ветку, чтобы сохранить эти исправления. И, наконец, я опубликовал его с git push staging new-branch
.
Однако, это не сработало; некоторые изменения в обновленной базе new-branch не сделали это на удаленном сервере. Должно быть, я сделал что-то не так, поэтому мне лучше просто повторить все это снова ... о. Как и раньше, я не знаю, как это сделать.
Итак, как я могу заставить git перезагружать все файлы, не удаляя пустое хранилище и не конфигурируя его снова?
I также попытался git push staging new-branch --delete
и затем повторил его, но после этого отсутствующие коммиты все еще отсутствовали.
РЕДАКТИРОВАТЬ:
Удаленная ветвь, на которую я нажимаю, была создана с git init --bare
и его hooks/post-receive
настроен на:
#!/bin/sh
git --work-tree=/var/www/html --git-dir=/home/<nu_username>/repo/site.git checkout -f
РЕДАКТИРОВАТЬ 2:
Я думаю, что наконец-то начал понимать, что для большинства очевидно : (ab) использование git для публикации - фактически двухэтапный процесс. Сначала вносятся изменения, а затем проверяется репо. Я всегда думал об этом как об одном действии, не понимая, что происходит на самом деле.
Итак, в обеих описанных мной ситуациях изменения были успешно продвинуты. Проблема всегда была с оформлением заказа.
В ситуации 1 права репо были установлены правильно, поэтому изменения были перенесены правильно. Поскольку репо было актуальным, дальнейшие попытки pu sh не вызовут ловушку после получения.
В ситуации 2 изменения new-branch
были переданы правильно, но ветвь фактически проверено было master
. Кроме того, я не выдвинул последние коммиты master
.
В обоих случаях проверка правильности ветки удаленного хранилища опубликовала бы sh изменения, которые я хотел опубликовать sh, во-первых.
Это все, следовательно, вызвало из-за огромного недопонимания того, что на самом деле происходило между моим письмом git push
и файлами, появляющимися на сервере.