Ответ 1
Вы пробовали это:
gitk path/to/file
Возможный дубликат:
Просмотр истории изменений файла с помощью Git версий
Иногда я хочу просмотреть историю определенного файла. Раньше я использовал P4V, и это было очень быстро и интуитивно.
Переключение на Git теперь является изнурительной задачей.
Я искал SO, и я пробовал несколько из предложенных guis: github, gitk, gitg, git -gui.
Все это устраняет необходимость вручную запускать команды, но рабочий процесс для этого одинаков. Просмотр истории файла; просмотр фиксации; поиск через diff of lots нерелевантных файлов. Он медленный и повторяющийся.
Все данные находятся в репо, поэтому я не вижу причин, чтобы этот простой общий вариант использования не мог быть более упорядоченным.
Может кто-нибудь порекомендовать инструмент, который это делает, или более эффективный способ использования командной строки для выполнения того, что я хочу?
Спасибо за любые предложения.
Вы пробовали это:
gitk path/to/file
Вы можете использовать журнал git для отображения различий при поиске:
git log -p -- path/to/file
git log -p
создаст патч (diff) для каждой выбранной фиксации. Для одного файла используйте git log --follow -p $file
.
Если вы ищете конкретное изменение, используйте git bisect
to найдите изменение в лог файлах (n), разделив число совершает половину, пока вы не найдете, где изменилось то, что вы ищете.
Также подумайте о том, чтобы вернуться в историю, используя git blame
to следить за изменениями в строке, если вы знаете, что это такое. Эта команда показывает самую последнюю ревизию, влияющую на определенную строку. Возможно, вам придется вернуться к нескольким версиям, чтобы найти первое изменение, в котором что-то было введено, если кто-то изменил его с течением времени, но это может дать вам хорошее начало.
Наконец, gitk
как графический интерфейс показывает мне патч сразу для любой фиксации, на которую я нажимаю.
Пример :
Главный вопрос для меня был бы, что вы на самом деле пытаетесь выяснить? Вы пытаетесь выяснить, когда в этот файл был внесен определенный набор изменений?
Вы можете использовать git blame
для этого, он будет анотировать каждую строку с SHA1 и дату, когда она была изменена. git blame
также может сообщить вам, когда определенная строка была удалена или куда она была перемещена, если вы заинтересованы в этом.
Если вы пытаетесь выяснить, когда была введена определенная ошибка, git bisect
- очень мощный инструмент. git bisect
выполнит двойной поиск в вашей истории. Вы можете использовать git bisect start
, чтобы начать деление пополам, а затем git bisect bad
, чтобы отметить фиксацию, где присутствует ошибка, и git bisect good
, чтобы отметить фиксацию, которая не имеет ошибки. git проверит фиксацию между ними и спросит вас, хорошо это или плохо. Обычно вы можете найти ошибку в течение нескольких шагов.
Поскольку я использовал git, я почти никогда не обнаружил необходимости вручную просматривать истории патчей, чтобы найти что-то, так как чаще всего git предлагает мне способ действительно искать нужную мне информацию.
Если вы попытаетесь меньше думать о том, как сделать определенный рабочий процесс, но больше в какой информации вам нужно, вы, вероятно, будете много рабочих процессов, которые (на мой взгляд) намного проще и быстрее.