"git remote -v" показывает (выборка) и (нажмите) дважды, один раз для "github" и один раз для "origin", что это значит?

70
7

Не уверенный, правильно ли он задал этот вопрос, я не смог ничего понять, а поисковая система не помогла.

Я обращался к учебникам 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. Почему я получил его дважды? (в отличие от учебника) Я также не уверен, что что-то не так, или это совершенно правильно. Указывая на какой-то другой учебник, объясняющий это тоже.

Не стесняйтесь предлагать изменения.

спросил(а) 2016-06-10T10:03:00+03:00 4 года, 3 месяца назад
1
Решение
72

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 попытаться сделать все сразу).

ответил(а) 2016-06-10T10:24:00+03:00 4 года, 3 месяца назад
69

В Git "удаленный" в принципе просто является псевдонимом для URL-адреса сервера, поэтому вам не нужно вводить полный URL-адрес все время. Если вы явно не укажете удаленное имя, имя по умолчанию - origin. В вашем случае у вас есть два пульта дистанционного управления, origin и github, указывающие на один и тот же URL (по какой-либо причине, вы, вероятно, следовали некоторым инструкциям, чтобы создать удаленный github для демонстрационных целей). Таким образом, один из двух лишний. Поскольку github - это имя, github от стандартов, я просто удалю этот пульт, набрав

git remote rm github

ответил(а) 2016-06-10T10:16:00+03:00 4 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема