Как настроить git, чтобы я мог видеть содержимое в репозитории - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь настроить репозиторий git на сервере. Я прочитал несколько статей о том, что у меня должен быть пустой репозиторий на сервере и локальный компьютер с не пустым репозиторием. Но когда я пытаюсь отправить sh в этот удаленный репозиторий (голый), я не могу.

Я полагаю, что неправильно понимаю назначение голого репозитория, что заставляет меня столкнуться с этой проблемой. Что я могу сделать, чтобы репозиторий на сервере работал как хранилище для файлов вместе с управлением версиями файлов? (Я хотел бы, чтобы удаленный сервер также содержал эти файлы и не был синхронизирован с github)

Один из способов, которым я пытался преодолеть это, было наличие другого не пустого хранилища на сервере, созданного с использованием git clone, но это не сработало для меня.

1 Ответ

0 голосов
/ 18 марта 2020

Если вы запустите:

git push

без дополнительных аргументов, Git необходимо знать , что отправить и , куда его отправить .

куда отправить часть обычно является именем remote . Обычное имя для (одного) пульта - origin, поэтому:

git push origin

сообщает Git, куда его отправлять: origin. Git все еще нужно знать что отправлять .

Когда вы используете git push, вы выбираете коммит или коммит для отправки. Значения по умолчанию здесь зависят от вашей версии Git, но у вас, вероятно, установлена ​​Git 2.0 или более поздняя версия (более ранняя версия с ее значением по умолчанию выдаст вам другую ошибку или ее нет). В этом случае по умолчанию ищется информация, связанная с вашим текущим именем ветви .

(сообщение об ошибке, которое вы должны были вставить в сам вопрос, а не как добавленный комментарий позже говорит, что вы находитесь на master.)

Информация, которую ищет Git, называется upstream . Каждое имя ветви, такое как master, может иметь один набор исходящих. Чтобы установить восходящий поток, вы можете использовать:

git branch --set-upstream-to=<target>

target здесь будет указывать оба удаленный (origin) и имя ветви на пульте дистанционного управления , которое в этом случае будет master. Ваш Git затем попросит их Git - тот, что на origin - установить своего мастера, основываясь на коммите (ах), которые Git отправляет, как найдено вашим master.

Сообщение об ошибке, которое вы цитировали:

use git push --set-upstream README.md master

- это не то, что Git напечатало бы; вместо этого он сказал бы:

use git push --set-upstream origin master

Этот --set-upstream флаг является вспомогательным флагом. У вас нет , чтобы сделать это, так же, как у вас нет , чтобы использовать git branch --set-upstream-to. Вы можете просто запустить:

git push origin master

каждый раз, чтобы сообщить Git: , позвонить Git в origin; дайте ему коммиты от моего master и попросите его установить его master.

Если вы запустите:

git branch --set-upstream-to=origin/master

, вы установите восходящий поток для текущая ветка до origin/master, что означает, что теперь вы можете запустить git push без аргументов. Или, если вы запустите:

git push --set-upstream origin master

(обратите внимание на различное написание каждого аргумента!) Ваш Git будет выполнять начальный git push origin master так же, как вы, но затем, если это удастся, ваш Git будет работать:

git branch --set-upstream-to=origin/master master

Обратите внимание, что это немного отличается от предыдущего: это говорит вашему Git, чтобы установить восходящий поток вашего master на origin/master, а не устанавливать восходящий поток ваша текущая ветка . Поскольку ваша текущая ветвь равна master, все работает одинаково.

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