Короткий ответ: нет, вы не можете этого сделать (на самом деле ни одну из этих трех вещей). Более длинный ответ по-прежнему отрицательный, но объясняет почему.
Первая проблема заключается в том, что файлы в Git не имеют имеют даты. Возможно, это не такая уж большая проблема, потому что Git не хранит файлы в первую очередь: Git хранит коммиты. У коммитов do есть даты, а у коммитов есть и файлы, поэтому вы можете просто использовать дату фиксации в качестве псевдодаты каждого из файлов в коммите. Затем вы можете выбрать самую новую версию файла commit. Слияние работает по коммитам, поэтому тот факт, что именно коммит имеет дату, не должен (логически) не быть здесь проблемой (хотя обратите внимание, что физический доступ к дате коммита будет большой проблемой, как только вы доберетесь до этого уровня).
Но это все еще не совсем то, что вам нужно, и в любом случае в Git нет встроенного механизма для этого. Git не заинтересован в датах во время слияния. Git интересует только содержимое файла. Вы можете попытаться использовать предложение ElpieKay о применении драйвера слияния (эта ссылка идет к документации gitattributes
, где вы увидите описание драйверов слияния), но оказывается, что это тоже не лучший подход. См. Стратегия слияния .gitattributes не работает для объяснения того, почему это не так хорошо. (Часть TL;DR заключается в том, что ваш пользовательский драйвер слияния не используется, если только нужно выполнить какое-либо слияние, а иногда слияние вообще не требуется. В одном случае это работает в вашу пользу, а в другом — нет.)
На самом деле, лучший подход почти наверняка состоит в том, чтобы вообще не хранить номер версии сборки в Git. Если у вас есть файл рабочего дерева с именем version.txt
, которого вообще нет ни в одном коммите, это будет просто неотслеживаемый файл, который вы можете исключить из всех коммитов. Переход от одного коммита к другому не затронет этот файл, так как он никогда не является частью репозитория. Проверка изменений ветки, которые вы используете, но, поскольку файл не находится в фиксации, он не будет скопирован в ваше рабочее дерево. Слишком поздно делать это с файлом, который вы уже включили в существующие коммиты, поскольку эти коммиты буквально нельзя изменить, но вы можете либо переписать историю своего репозитория, либо просто изменить имя файла.
Чтобы неотслеживаемый файл не отслеживался, его имя может быть указано в файле .gitignore
. Обратите внимание, что перечисление файла в .gitignore
не имеет никакого эффекта, если этот файл уже отслеживается, т. е. находится в индексе Git. (Ответ на вопрос, когда файл находится в индексе Git, довольно длинный.)
person
torek
schedule
30.01.2021
git rerere
, он позволяет записывать настройки слияния. git-scm.com/docs/git-rerere - person jessehouwing   schedule 30.01.2021