"git remote -v" показывает (выборка) и (нажмите) дважды, один раз для "github" и один раз для "origin", что это значит?
Не уверенный, правильно ли он задал этот вопрос, я не смог ничего понять, а поисковая система не помогла.
Я обращался к учебникам git
(очевидно, что я новичок в этом).
Я узнал команду git remote -v
чтобы проверить удаленный статус. Ну, мерзавец учебник был снимки, как это, показав результат:
origin https://github.com/something/something-else.git (fetch)
origin https://github.com/something/something-else.git (push)
Но когда я попробовал команду, я получаю аналогичный результат как для origin
так и для github
. Что-то вроде этого:
github https://github.com/srujan7/something-something-url.git (fetch)
github https://github.com/srujan7/something-something-url.git (push)
origin https://github.com/srujan7/something-something-url.git (fetch)
origin https://github.com/srujan7/something-something-url.git (push)
Проблема:
Я не уверен, что здесь означает этот github
и origin
. Почему я получил его дважды? (в отличие от учебника) Я также не уверен, что что-то не так, или это совершенно правильно. Указывая на какой-то другой учебник, объясняющий это тоже.
Не стесняйтесь предлагать изменения.
Git поддерживает несколько пультов, поэтому это достаточно нормальное состояние. Изменить: как ответил sschuberth, не совсем нормально иметь один и тот же URL для нескольких пультов. Это не вредно, но вы можете удалить один из них.
Что такое пульт?
Пульт дистанционного управления - это просто имя, например, origin
или upstream
srujan
или github
или даже fred
или srujan
.
Git сохраняет каждое такое имя в файле конфигурации. Под этим именем Git может хранить дополнительную информацию, такую как один или несколько URL-адресов. (Для удаленного, чтобы быть полезным он должен иметь по крайней мере один URL, сохраненный в качестве url
- fetch
url
настройки.) Для извлечения, Git обычно требуется, по меньшей мере одна fetch
установки на пульт, а также.
Когда git remote -v
перечисляет два или более пультов
Чаще всего каждый из ваших репозиториев Git будет иметь только один пульт, обычно называемый origin
. Это связано с тем, что когда git clone
создает новый репозиторий, копируя какой-либо существующий репозиторий, он записывает (в новый репозиторий) URL-адрес существующего репозитория. Чтобы записать это, он создает отдаленный, и по умолчанию она использует имя origin
для этого пульта дистанционного управления.
git remote add
дополнительная добавка к git remote add
. Вы указываете имя для удаленного и URL-адреса, а Git записывает новое удаленное имя и задает его основной URL-адрес тому, который вы только что дали.
После этого git remote
или git remote show
перечислит два (или более) пультов, которые вы настроили.
Как использовать пульт дистанционного управления?
Когда вы запускаете git fetch
или git push
, самым следующим словом обычно называется имя пульта для извлечения или нажатия. Например, git fetch origin
из удаленного имени origin
.
Если у вас два пульта дистанционного управления, один по имени fred и один по имени srujan, вы можете git fetch fred
или git fetch srujan
. Точно так же вы можете git push fred
или git push srujan
. Они свяжутся с указанным удаленным, используя URL-адрес, хранящийся под этим удаленным.
При наборе с удаленного устройства Git будет копировать свои ветки Git, но переименуйте их так, чтобы они были уникальны для этого конкретного пульта. Например, если я srujan
из удаленного srujan
, а srujan Git (по указанному URL) имеет master
сервер и develop
, я буду получать ветки удаленного отслеживания с именем srujan/master
и srujan/develop
. Если я выберу из удаленного fred
, я получу ветки удаленного отслеживания, такие как fred/master
и fred/develop
.
Как насчет git pull
?
Команда git pull
предназначена для удобного сокращения для git fetch
за которым следует git merge
. Как git fetch
, git pull
занимает третье слово, которое является именем пульта. Главное, что делает git pull
, заключается в том, чтобы передать его на git fetch
.
Странная вещь о git pull
заключается в том, что она также принимает названия ветвей. Он использует это нечетным образом: git pull srujan master
означает "сначала запустить git fetch srujan
, затем запустить git merge surjan/master
".
Обычно вам лучше просто запускать git fetch
, по крайней мере, сначала, потому что возможно либо сбой на этапе выборки (например, если ваше сетевое подключение опускается, например), либо шаг слияния для отказа (если слияние не может быть сделано автоматически). Пока вы не знакомы с Git, я считаю, что вам лучше знать, какой именно шаг поступил неправильно, потому что вам нужно будет предпринять различные действия, чтобы исправить это, в зависимости от того, какой шаг не прошел.
Вы также можете захотеть переустановить, а не слить. Это, во всяком случае, более сложное, чем слияние (хотя часто и лучший подход). Вы можете получить git pull
чтобы выполнить rebase вместо слияния, и на самом деле вы можете сделать это автоматически, но детали немного сложны, и вручную запускает git fetch
сначала, а затем git rebase
вторых, не сложно в все.
(Короче говоря, не используйте git pull
пока вы не будете хорошо знакомы с извлечением, слиянием и перезагрузкой, и готовы позволить Git попытаться сделать все сразу).
В Git "удаленный" в принципе просто является псевдонимом для URL-адреса сервера, поэтому вам не нужно вводить полный URL-адрес все время. Если вы явно не укажете удаленное имя, имя по умолчанию - origin
. В вашем случае у вас есть два пульта дистанционного управления, origin
и github
, указывающие на один и тот же URL (по какой-либо причине, вы, вероятно, следовали некоторым инструкциям, чтобы создать удаленный github
для демонстрационных целей). Таким образом, один из двух лишний. Поскольку github
- это имя, github
от стандартов, я просто удалю этот пульт, набрав
git remote rm github