В терминале PyCharm "git branch -a" отображаются удаленные git (Github) репозитории, которые удалены - PullRequest
0 голосов
/ 29 февраля 2020

enter image description here

Создан репозиторий GitHub для проекта PyCharm с использованием опции VCS в PyCharm. После этого была создана другая ветка с именем Pytest- bdd. Теперь сам репозиторий вручную удален с Github. Но когда команда git branch -a запускается с терминала PyCharm, она показывает следующие параметры

  1. * master
  2. remotes/github/Pytest-bdd
  3. remotes/github/master

Почему он показывает удаленный репозиторий, когда его больше нет в Github.

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

TL; DR: удалить пульт

. Если весь репозиторий удален, вы должны удалить remote:

git remote remove github

Это также удаляет все имена удаленного отслеживания, которые go с этим пультом.

Long: имена удаленных и удаленного отслеживания

При работе с Git вы часто работаете с двумя или даже более двух Git хранилищ. Каждый репозиторий существует в каком-то месте на каком-то компьютере. Файл или другой ресурс, который существует на каком-либо компьютере, часто может быть назван с использованием Унифицированного указателя ресурса или URL .

Так что если у вас есть хранилище Git в GitHub под именем https://github.com/user/repo.git, например, это URL для этого хранилища. Вы могли бы вводить эту строку каждый раз, когда вы хотите, чтобы ваш собственный Git на вашем компьютере вызывал Git на GitHub, отвечающем за этот репозиторий в течение на GitHub. Но проще ввести короткое имя:

git fetch origin

, чем более длинное:

git fetch https://github.com/user/repo.git

Это короткое имя, origin, является remote, Удаленный, в Git, хранит URL. Он может сделать больше, но сохранение URL - это его основная работа c.

При первом клоне в каком-либо существующем хранилище Git добавляет удаленное имя origin для хранения URL, который вы использовали в вашей команде git clone. Так что для вашего собственного Git на вашем компьютере довольно обычно иметь origin.

Вы можете добавить больше пультов. Во-первых, вам нужно придумать имя , которое вы хотите использовать, например hubert-blaine-wolfeschlegelsteinhausenbergerdorff-sr или fred или github или upstream. Более короткие имена, вероятно, лучше, но вы должны использовать такое, которое что-то значит для вас . Затем вам нужен URL-адрес, по которому какое-либо хранилище Git отвечает на телефон Inte rnet при его вызове. Затем вы используете с git remote add по добавление пары remote-and-URL:

git remote add upstream https://github.com/user2/repo2.git

, например.

Когда вы используете git fetch, у вас есть Git позвоните в другой Git. Если вы используете remote для именования других Git, ваш Git находит URL из ваших файлов конфигурации Git и использует его для телефонной связи другого Git. Другой Git перечислит для ваших Git, его названий ветвей. Ваш Git в конце сеанса git fetch создаст в вашем хранилище серию похожих имен.

Чтобы не наступать на вашу ветку names, ваш Git создает имена ветвей в вашем хранилище, используя имена для удаленного отслеживания . Чтобы превратить их имя branch в ваше имя remote-tracking , ваше Git вставит ваше имя удаленного , например origin или upstream, в перед их филиал имя. Таким образом, их master становится вашими origin/master, или upstream/master, или github/master.

Внутренне, все из этих имен имеют длинные (или полное имя) формы: вместо master, например, ваша собственная ветка master действительно refs/heads/master. origin/master здесь означает refs/remotes/origin/master. Git обычно удаляет эти префиксы, чтобы вам не приходилось их видеть или вводить.

Когда вы запускаете git branch -r, ваш Git перечислит эти имена для удаленного отслеживания. Когда вы запускаете git branch или git branch -l, ваш Git будет перечислять ваши ветви имен. Когда вы используете git branch -a, ваш Git выведет список обоих , но на этот раз вместо сокращения имен удаленного отслеживания, например, до origin/master, ваш Git сократит их до remotes/origin/master.

Это то, что вы показываете на картинке, которую вы подняли вверху вашего вопроса. ответвление имя master - оригинальное имя в вашем хранилище - выделено зеленым; имена для удаленного отслеживания - их имена ветвей, но измененные вашим Git для соответствия вашему хранилищу - выделены красным.

Начиная с хранилища на GitHub полностью исчезли, все эти имена удаленного отслеживания красного текста теперь бесполезны. Вы можете удалить их, один за другим, из своего собственного Git хранилища. Но поскольку хранилище на GitHub полностью исчезло, само remote name github само по себе также бесполезно. Вместо того, чтобы кропотливо удалять каждое имя отслеживания удаленного устройства и оставлять его позади, вы можете просто полностью удалить его. При удалении удаленного удаляются все ваши собственные Git имена для удаленного отслеживания , скопированные с этого удаленного, поэтому одно удаление сделает все.

1 голос
/ 29 февраля 2020

Это «ветви удаленного слежения» https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches. Они помнят, как выглядел «пульт дистанционного управления в последний раз, когда вы с ним общались», что означает, что они не обновляются в реальном времени тем, что вы делаете с пультом другими способами, например, удаляя репозиторий на GitHub.

Если вы хотите очистить этот материал из локального репозитория, выполните следующие две вещи:

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