Почему делает сбой-t ответвления мерзавца с “Не отслеживанием: неоднозначная информация”?

instanceof работает на экземпляры того же класса или свои подклассы

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

ArryaList и RoleList оба Список instanceof

, В то время как

getClass () == o.getClass () будет верен, только если оба объекта (это и o) принадлежат точно тому же классу.

Так в зависимости от того, что необходимо сравнить, Вы могли использовать один или другой.

, Если Ваша логика: "Каждый возражает, равняется другому, только если они - оба тот же класс", необходимо пойти для "равняния", которое я думаю, большинство случаев.

23
задан che 4 March 2015 в 12:48
поделиться

3 ответа

Понятно! Проблема заключалась в том, что я ранее настроил удаленный компьютер с - mirror , чтобы иметь резервную / общедоступную копию моего репозитория.

Если вы запустите

git remote add --mirror <name> <url>

, он не только помечает удаленный как зеркало (это то, что я хотел для пушей), но также настраивает параметр remote. .fetch для зеркала на + refs / *: refs / * , это означает, что все ваши ветки внезапно «отслеживают» ваш зеркальный репозиторий, и любая попытка создать ветку отслеживания потерпит неудачу.

(В качестве дополнительного бонуса запускается git fetch чтобы перезаписать все ваши ссылки старыми из вашего резервного репозитория.)

Решение, которое, кажется, решает эту проблему, - установить remote. .fetch на : (который , Надеюсь, означает "

10
ответ дан 29 November 2019 в 01:27
поделиться

, потому что она находит меньше одной

Нет: потому что находит больше , чем одна соответствующая удаленная ветвь, что означает, что функция remote_find_tracking () возвращает более одной ветви отслеживания для данной локальной ветки, ссылка

Is some_remote_branch не ] уже отслеживается одним из ваших местных филиалов?
( git config -l позволит вам проверить, что вы в настоящее время настроили).
( git branch -r также может помочь составить список ваших текущих веток удаленного отслеживания.)


удаленные ветки, которые, как я думал, отличаются от веток удаленного отслеживания.

Неверно, как показано на иллюстрации. автор этот поток :

удаленные-ветки - это "настоящие" удаленные-отслеживающие-ветки. Вы не фиксируете их локально, они по сути являются доступными только для чтения копиями того, что происходит в удаленном репозитории.
Если вы попытаетесь выполнить «git-checkout» ветку удаленного отслеживания, вы получите отдельную HEAD.

Локальная ветвь:
Ветвь, в которой вы можете фиксировать изменения. При желании ветку можно настроить так, чтобы она «следовала» за одной из ваших веток удаленного отслеживания. Это означает, что « git-pull » без аргументов (когда ваша локальная ветка извлечена) автоматически будет « git-fetch », а затем « git-merge 'ветвь удаленного отслеживания.

Теперь:

задача git-fetch - обновить ветки удаленного отслеживания любыми изменениями, обнаруженными в удаленном репозитории.
Git- pull запускает git-fetch , а затем запускает git-merge , чтобы обновить текущую извлеченную ветку.

Проблема для git-merge:

Когда это происходит, Вы можете установить, какая удаленная-отслеживающая-ветвь будет выбрана в этой ситуации с помощью опции --track.

- track устанавливает локальную следующую ветвь для ссылки на удаленную ветку, не в ветвь отслеживания

Учтите, что remote_find_tracking () принимает один удаленный и refspec с заполненным src и возвращает данное refspec после заполнения его dst, если соответствующее отслеживание был настроен для удаленного доступа, то есть git.

/*
 * For the given remote, reads the refspec's src and sets the other fields.
 */
int remote_find_tracking(struct remote *remote, struct refspec *refspec);

Может быть, он считает, что у него уже есть локальная следующая ветвь, соответствующая some_remote_branch . У вас есть филиал с таким же названием?
Или наоборот: ваша текущая ветка имеет удаленную ветку с аналогичным именем, что делает ее естественным кандидатом для любого git-merge : пытается заставить его отслеживать другой удаленный ветка сделает git-merge неспособным выбрать локальную ветвь для обновления / слияния с изменениями удаленного.

15
ответ дан 29 November 2019 в 01:27
поделиться

Я видел это также, когда у меня было два удаленных репо с одинаковым (по умолчанию) шаблоном выборки (fetch = +refs/heads/*:refs/remotes/origin/*) и одинаковыми ветками.

Я так и не понял, как это правильно исправить, поскольку я хочу продолжать push/pull в оба репо, но ручное добавление информации в .git/config проекта работает, например:

[branch "mybranch"]
  remote = origin
  merge = refs/heads/mybranch
24
ответ дан 29 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: