Git показывает различия даже после `push —force`?

#git #atlassian-sourcetree

#git #atlassian-исходное дерево #atlassian-sourcetree

Вопрос:

Упрощение :

введите описание изображения здесь

В моей master ветке я добавил немного мусора.
Затем я отправил его в origin / master

Позже я обнаружил, что добавление этого мусора было ошибкой. Я знаю, что могу / должен создать фиксацию возврата.

Но я этого не сделал. Я сделал git reset --hard

введите описание изображения здесь

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

Очевидно, я не могу нажать, потому что git говорит мне pull перед нажатием.

Так я и сделал push --force :

введите описание изображения здесь

Но даже после этого sourcetree показывает, что они не совпадают :

введите описание изображения здесь

Хотя, если я проверю наличие изменений, я не вижу никаких изменений :

введите описание изображения здесь

Вопрос:

Если удаленный master и локальный master не имеют различий, почему sourcetree показывает мне pull ?

введите описание изображения здесь

Даже git status показывает, что я в порядке (без вытягивания) :

введите описание изображения здесь

Комментарии:

1. Возможно, это проблема с sourcetree. Вы можете снова открыть sourcetree и проверить.

2. @действительно неизданный. Повторно открыть — решаемая проблема. пожалуйста, опубликуйте это как ответ, чтобы это могло быть полезно другим.

3. Нет необходимости закрывать и повторно открывать, просто обновите с помощью F5 или R .

4. Версия SourceTree для Windows отстой (на Mac она работает так, как должна). В Windows я использую и рекомендую Git Extentions .

Ответ №1:

SourceTree периодически проверяет статус удаленного.

Решение 1: просто снова откройте Sourcetree

Решение 2: Инструменты> Параметры> Общие проверяйте удаленные устройства по умолчанию на наличие обновлений каждые X минут. Сделайте X равным 1/2, чтобы быстрее увидеть изменение статуса. Как и на изображении, вы можете увидеть обновленный статус через 1 минуту.

измените время удаленного обновления

Надеюсь, это поможет.

Ответ №2:

Общий совет: всякий раз, когда графический интерфейс, который обертывает программу или библиотеку CLI, кажется, ведет себя неправильно, рекомендуется проверять непосредственно с помощью реальной программы или библиотеки CLI.


В этом случае выполняется выборка:

 git fetch origin
  

А затем проверяет, где ветви указывают на использование:

 git log master origin/master
  

Или, возможно:

 git branch --all --verbose
  

Или даже:

 git show master
git show origin/master
  

позволяет проверить, на какой коммит (хэш) на самом деле указывают ветви, и, следовательно, подтвердить (или нет), есть ли проблема в графическом интерфейсе.

Даже если вы подтвердите, что SourceTree не показывает проблему при ее повторном открытии, я бы на всякий случай перепроверил с помощью Git напрямую.

Ответ №3:

Иногда Sourcetree не синхронизируется с вашим локальным репозиторием. Когда это произойдет, просто скажите Sourcetree обновить его представление с помощью F5 (Windows) или R (macOS).