Я хотел бы видеть старую версию файла, но это:См Nth предыдущей версии файла
git show HEAD~1:main.c
дает мне предыдущее коммят. Этот файл не изменился со времени предыдущего коммита, поэтому я вижу тот же контент. Чтобы найти более старую версию этого файла, мне нужно вручную увеличить спецификацию ревизии, пока не найду фактическое различие. Это расстраивает.
В этом конкретном случае мне не нужны коммиты: я просто хочу видеть предыдущие версии этого конкретного файла. Как я могу дать спецификацию ревизии типа «Nth oldest version»? Спецификации ревизии I know всегда связаны с привязкой, а не связаны с файловой версией.
Ближайшие у меня есть:
git log --follow --pretty=oneline -- annotated-bower.json
Что дает мне список коммитов, где этот файл был изменен. Теперь, когда я вижу этот список, как я могу сказать git show
что-то вроде:
git show OLDER~3:main.c
без необходимости вручную копировать-вставить совершать спецификации:
git show b27a57c6732200d8ef8b5b8c87d07fe67f37e9db:main.c
Я могу, конечно, реализовать это сам:
git-previous.sh main.c 3
Разбор вывода git log --follow --pretty=oneline
, чтобы получить хеш-код фиксации и позвонить затем git show
, но я хотел бы избежать повторного использования колеса. Кроме того, это похоже на столь полезную функцию, что это , безусловно, часть запаса git
, и я только что наблюдал за ней, не так ли?
«Возьмите выход журнала мерзавца, поместить его в список и цикл по записям. Готово." Я не называю это * done *, как в, я быстро увижу 5-ю версию этого файла. Это требует много ввода (и опечаток), поэтому мне придется поместить это в скрипт, если git не поддерживает это из коробки.И мы, вероятно, используем git по-разному, потому что иногда мне нужен такой рабочий процесс (хотя и не очень часто) – dangonfast
И да, gitk делает правильные вещи здесь, но мне нужна версия из командной строки (которая кажется git не предложение, из коробки?) – dangonfast
Принимая это. Кажется, git не может сделать это напрямую, поэтому необходимы некоторые сценарии. – dangonfast