Can 2 Git clones толкают/тянут друг к другу, не имея удаленных ветвей отслеживания, представляющих другой? Я знаю, что они очень полезны большую часть времени, но иногда я мог бы тянуть/нажимать между вторичными репозиториями (не мой голый сервер), и я не хочу загромождать вещи. Если мне не нужна удаленная ветка отслеживания, она может быть удалена или не создана?В Git необходимы удаленные ветви отслеживания?
ответ
Если вы имеете в виду, не имеющие локальные изменения ветви трека на удаленном филиале:
Вы не должны иметь свои филиалы отслеживать удаленный филиал. Это удобство, которое имеет несколько преимуществ, которых у вас нет; например, git status
, в котором указано, что ваша ветка x совершает переход к началу координат.
Не настраивать ветвь отслеживания не помешает вам использовать пульты дистанционного управления. Пульты по-прежнему могут использоваться во всех командах вместо ввода URL-адреса.
Чтобы посмотреть, какие отрасли отслеживаются, используйте git branch -avv
. Любые ветви, которые отслеживают удаленную ветвь, будут отображать удаленную ветку слева от хэша commit.
Я не знаю, как удалить отслеживание из ветки, кроме как удалить его и воссоздать без отслеживания.
Если вы имеете в виду локальную копию удаленной ветви (как видно на git branch -r
):
Вы можете удалить их с git branch -dr <remote/branch>
- но он вернется в следующий раз, когда вы тянуть или извлекать его. Они необходимы для работы git fetch ...
, а git pull ...
использует git fetch ...
. Каждый раз их нужно будет удалять вручную или создавать сценарии.
Однако они не добавляют никаких реальных помех или служебных данных в репозиторий. Удаленная ветка отслеживания на диске - это просто файл с хешем фиксации.Комиты сохраняются где-то еще и, предположительно, поскольку вы хотели их получить, они были объединены или переустановлены в одну или несколько локальных ветвей.
Эта информация может быть выбрана с использованием URL вместо удаленного. Это не создает запись о том, что было выбрано в любом месте, кроме файла FETCH_HEAD. Поскольку этот файл переопределяется с каждой выборкой, данные фиксации будут потеряны, если не будут объединены или переустановлены в локальную ветвь до выполнения другой выборки. Удаленная ветка отслеживания предназначена для хранения собранных данных.
Да, вы можете легко достичь этого, просто не добавляя пульт дистанционного управления.
Обычный способ нажатия/вытягивания между репозиториями - git remote add NAME URL
, но это просто удобство (а также требуется для удаленных ветвей отслеживания).
Вместо того, чтобы использовать git pull REMOTE_NAME BRANCH
, вы можете просто git pull URL BRANCH
и использовать вытяжение таким же образом. В принципе, вы можете подставить URL-адрес репо для имени удаленного в большинстве команд git.
Удаленные треки отслеживания не требуются. Они просто удобны: (a) дают git push и тянут поведение по умолчанию и (b) получать информацию о статусе локальной ветви, в отличие от удаленного в выводе состояния git. Вам не нужно работать с Git.
Я не хочу загромождать вещи
Обратите внимание, что настройка удаленного филиала отслеживания не загромождать вещи вообще. Все, что он делает, это добавить три строки в конфигурационный файл локальных репозиториев. Он ничего не делает. Вся дополнительная информация в течение git status
генерируется только при выполнении команды; ничто не хранится или каким-либо иным образом не мешает. Поэтому, как правило, нет проблем с настройкой ветви удаленной отслеживания, даже если она вам не нужна.
Спасибо, это действительно полезный совет! – user826840