Изменения в.gitignore не отображаются в журнале, но отображаются в коммите для фиксации diff

Когда что-то возвращается, я внес изменения в файл.gitignore. Сегодня, когда я вытащил последний код, моего изменения не было. Итак, я запустил эту команду:

git log -p .gitignore

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

Но почему я не вижу изменения в приведенной выше команде? И я даже не вижу этого изменения, когда я использую

gitk .gitignore

Также мне интересно, может ли это произойти, когда я пытаюсь посмотреть историю какого-то другого файла?

1 ответ

Решение

Может быть, изменение, о котором вы говорите, было введено слиянием с другой веткой? Существуют разные стратегии слияния, и, несмотря на то, что ваш коммит может быть хронологически последним, процедура слияния может предпочесть более старый коммит, который соответствует правилам стратегии.

Git по умолчанию использует recursive стратегия, которая организует коммиты в порядке их создания. Но, возможно, в вашем случае слияние было сделано с помощью ours а также heirs стратегия, предпочитающая коммиты из одной ветви над коммитами из другой. Вот почему вы можете не увидеть, что вы на самом деле ожидаете.

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

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