Предположим, что мой филиал "мастер" проверен. Я внес некоторые изменения в производство в "master", и теперь я хочу переустановить свою "экспериментальную" ветвь на последнего мастера. Но я хочу сделать это, не изменяя никаких файлов в моей рабочей копии. По сути, я хочу, чтобы все волшебство происходило внутри каталога .git, не касаясь рабочей копии.
Если не для требования "не изменяйте мою рабочую копию", это будет просто делом:
# current branch is master
git checkout experimental
git rebase master
git checkout master
Моя реальная проблема заключается в том, что это изменяет временные метки в моей рабочей копии, хотя я заканчиваю, проверяя то же самое содержимое, с которого я начал работать. Как только я запустил "git checkout experimental", любые файлы, содержащие изменения в экспериментальной ветке, будут иметь их mtime установленное текущее время - и так будут файлы, которые были изменены в master с момента последнего переустановки экспериментального, Поскольку изменения в mtimes изменились, такие вещи, как инструменты сборки, дают представление о том, что они работают, что нужно сделать снова, хотя к тому времени, когда я закончил, содержимое файлов на самом деле не изменилось. (В моем случае это означает, что если временная метка файла проекта изменяется, Visual Studio думает, что ей нужно потратить много времени на разгрузку и перезагрузку проекта.) Я хочу этого избежать.
Есть ли способ сделать все вышеперечисленное за один шаг, не изменяя ничего в рабочей копии (при условии, что во время rebase конфликтов нет) ?
(Если есть конфликты, мое предпочтение будет состоять в том, чтобы показать ошибку, а затем прервать всю операцию, не изменяя никаких временных меток. Но это только мое предпочтение, а не жесткое требование - я не знаю, что все возможно.)
Конечно, я могу написать script для захвата mtimes, запустить git, а затем reset mtimes; но кажется вероятным, что Git уже имел бы способ сделать такие вещи, как rebase, не беспокоя рабочую копию, так как rebase действительно касается дельт, а не фактического содержимого файлов.