2013-02-24 3 views
0

Can 2 Git clones толкают/тянут друг к другу, не имея удаленных ветвей отслеживания, представляющих другой? Я знаю, что они очень полезны большую часть времени, но иногда я мог бы тянуть/нажимать между вторичными репозиториями (не мой голый сервер), и я не хочу загромождать вещи. Если мне не нужна удаленная ветка отслеживания, она может быть удалена или не создана?В Git необходимы удаленные ветви отслеживания?

ответ

2

Если вы имеете в виду, не имеющие локальные изменения ветви трека на удаленном филиале:

Вы не должны иметь свои филиалы отслеживать удаленный филиал. Это удобство, которое имеет несколько преимуществ, которых у вас нет; например, 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. Поскольку этот файл переопределяется с каждой выборкой, данные фиксации будут потеряны, если не будут объединены или переустановлены в локальную ветвь до выполнения другой выборки. Удаленная ветка отслеживания предназначена для хранения собранных данных.

1

Да, вы можете легко достичь этого, просто не добавляя пульт дистанционного управления.

Обычный способ нажатия/вытягивания между репозиториями - git remote add NAME URL, но это просто удобство (а также требуется для удаленных ветвей отслеживания).

Вместо того, чтобы использовать git pull REMOTE_NAME BRANCH, вы можете просто git pull URL BRANCH и использовать вытяжение таким же образом. В принципе, вы можете подставить URL-адрес репо для имени удаленного в большинстве команд git.

+0

Спасибо, это действительно полезный совет! – user826840

2

Удаленные треки отслеживания не требуются. Они просто удобны: (a) дают git push и тянут поведение по умолчанию и (b) получать информацию о статусе локальной ветви, в отличие от удаленного в выводе состояния git. Вам не нужно работать с Git.

Я не хочу загромождать вещи

Обратите внимание, что настройка удаленного филиала отслеживания не загромождать вещи вообще. Все, что он делает, это добавить три строки в конфигурационный файл локальных репозиториев. Он ничего не делает. Вся дополнительная информация в течение git status генерируется только при выполнении команды; ничто не хранится или каким-либо иным образом не мешает. Поэтому, как правило, нет проблем с настройкой ветви удаленной отслеживания, даже если она вам не нужна.