TL; DR
Вам необходимо запустить весь процесс, настроив remote в своем собственном хранилище Git:
git remote add <name> <URL-or-path>
, после чего вы Вы должны использовать name
часть, которую вы использовали, вместо того, чтобы вводить (предположительно более длинный) URL-или-путь. То есть вы сделаете:
git remote add origin /d/Seafile/...
git push --set-upstream origin master
Long
Позвольте мне начать с того, что мне действительно не нравится слово tracking здесь, поскольку оно вводит всех в заблуждение. Он сделал это и с вами.
Мы должны использовать git remote
для создания или иным образом манипулировать пультами . Пульт ДУ - это просто короткое имя - например, origin
, которое является своего рода стандартным именем, используемым для пульта ДУ, - в котором будет храниться URL-адрес (и некоторая другая внутренняя информация для Git). .
Я заново набираю с вашего скриншота, поэтому могу ввести опечатки, но ключ здесь в этой строке:
git push --set-upstream /d/Seafile/Development/gitTest/centralRepo.git master
Давайте сделаем быстрый обход документация Git. Синтаксис для git push
описан в строках SYNOPSIS документации как (сокращенно):
<strong>git push</strong> [options] [repository [refspec...]]
Здесь ваш одиночный параметр --set-upstream
(что само по себе хорошо), и ваш репозиторий задается как путь, /d/Seafile/...
. Если вы перейдете к разделу ОПЦИИ, параметр хранилища будет описан слишком кратко следующим образом:
<repository>
«Удаленный» репозиторий, который является местом назначения операция пу sh. Этот параметр может быть либо URL-адресом ... либо именем удаленного ...
К сожалению, здесь опущено то, что --set-upstream
, и тип отслеживания, который вы хотите, работает только в том случае, если указанный параметр является удаленным .
Имя пути, например /d/Seafile/...
, которое Git внутренне преобразовано в D:/Seafile/...
, как вы можете видеть в других выходных данных, считается как URL-адрес, а не «удаленный».
Пульты дистанционного управления и имена для удаленного отслеживания
Вместо того, чтобы говорить, что имя ветви отслеживает какое-то другое имя, я хотел бы использовать Фраза имеет в качестве восходящего . Эта фраза, к сожалению, немного неуклюжа (поэтому Git использует track в качестве глагола). Любое имя ветви может не иметь ни одного восходящего потока, ни одного восходящего. Когда ветвь имеет восходящий поток, это может быть либо:
- другое имя ветки, например,
develop
может иметь master
в качестве восходящего потока, либо - a имя удаленного отслеживания , например
origin/master
.
Я называю имена, такие как origin/master
имена удаленного отслеживания (Git документация в основном называет эти имена веток удаленного отслеживания ). Они появляются, соединяя вместе имя remote , например origin
, с именем ветви: имя ветви в Git, с которой Git обращается, когда ваш Git звонит на другой Git, используя URL , сохраненный в этом «удаленном».
Когда вы используете git fetch
или git push
, у вас есть Git позвоните другому Git. Есть два Гита; каждый Git имеет своих ветвей. У вашего Git есть ваши ветви, а у их Git есть их. Ваши Git предлагают запомнить их имена для вас, в качестве услуги ... но для того, чтобы ваши Git запомнили имена их филиалов, ваш Git должен придумать имя для каждого, который не мешает вашим собственным именам веток. Ваш Git делает это, вставляя что-то перед именами их ветвей. 1
Часть, которая вставляется сюда, это имя remote , например, origin
. Без пульта дистанционного управления - вместо URL-адреса - вставить нечего, поэтому вставка впереди никогда не произойдет. Параметр --set-upstream
становится неработоспособным.
Так почему ваш Git напечатал:
Branch 'master' set up to track remote branch 'master' from 'D:/Seafile/Development/gitTest/centrapRepo.git'.
? Единственный возможный ответ здесь - это то, что Git очень мерзкий. Он просто сказал, что сделал то, что физически не может сделать, и поэтому не сделал.
1 Технически имена удаленного отслеживания находятся в отдельном пространстве имен : имена ветвей имеют полностью прописанные имена, которые начинаются с refs/heads/
, так что master
действительно refs/heads/master
. Имена удаленного отслеживания начинаются с refs/remotes/
и go on, чтобы включать имя удаленного и другого sla sh. Остальная часть имени - это сокращенное имя ветви, которое видно на этом пульте по URL-адресу. Таким образом, их refs/heads/master
становится вашим refs/remotes/origin/master
, который сокращается до origin/master
.