Основная проблема заключается в том, что вы пытаетесь перейти в «пустой» репозиторий git. Хотя это возможно, многие документы и книги не дают понять, что это не рекомендуется.
Таким образом, в то время как git является децентрализованным scm-сервером с несколькими мастерами, на практике вы имеете в виду «мастер» или «центральные» репозитории, которые вы клонируете из и нажимаете до и служат в качестве «канонического» репо, и рабочих репо (например, на вашем ноутбуке), которые вы клонировали из «мастера», которого вы вытягиваете в и толкаете из . Эти «главные» репозитории должны быть созданы с помощью --bare:
server$ cd ; mkdir git
server$ git clone --bare /home/user/foo /home/user/git/foo.git
Как только вы это сделаете, вы сможете нажать с вашего ноутбука:
laptop$ cd foo
laptop$ git remote -v
laptop$ origin user@server:/home/user/git/foo.git (fetch)
laptop$ origin user@server:/home/user/git/foo.git (push)
laptop$ git push origin master
Вы также можете сделать на сервере:
git config --global receive.denyCurrentBranch "ignore"
Но я бы не стал этого делать, пока вы не поймете, как лучше работает git.