Git diff показывает изменения, которых нет в коммите

Что-то случилось с нашей веткой dev, так что в нее вошло много кода из ветки release. Я пытаюсь отследить, где произошли эти изменения, но я получаю очень удивительные результаты. Когда я бегу git diff HEAD@{2} он показывает список изменений, включая множество файлов, которые не были затронуты в течение нескольких месяцев, подразумевая, что HEAD@{2} это коммит, который принес плохой код, как я его вижу. Однако, если я бегу git show HEAD@{2} он показывает довольно безобидный коммит, который касается только двух файлов. Далее, когда я бегу git reset --hard HEAD@{2} Похоже, это исправляет проблемы и завершает все странности после того, как я дважды попробовал сброс, а затем отменил его git reset --hard origin/dev теперь кажется, что коммит со всем дополнительным кодом находится в HEAD@{1},

Похоже, я не могу понять это, так что любые предложения / указатели / советы или хитрости будут приветствоваться, но некоторые наводящие меня вопросы озадачивают: как этот код попал в ветку, если не было слияния совершить? Если кто-то выбрал коммит из производственной ветви в ветку разработки, это может быть связано с этим? Каковы различия (если таковые имеются) в том, как git show а также git diff решить коммиты?

Текущая теория, которую я дал ограниченным знаниям git: кажется, что эти изменения не были частью какого-либо коммита, но каким-то образом попали в дерево прямо вокруг HEAD@{2} так diff показывает изменения, когда он идет по дереву объектов, но show не видит их, поскольку они не являются частью коммита. Имеет ли это какой-то смысл или я далеко от базы?

В любом случае, спасибо за любую помощь, которую вы можете оказать!

0 ответов

Другие вопросы по тегам