5

в одном из наших проектов MysQL-дампы синхронизируются с git. Один файл для каждой таблицы в базе данных. После извлечения / объединения дампы импортируются в локальную базу данных с помощью ловушки. Проблема в том, что мне нужно найти все дампы таблиц, которые были изменены с помощью pull, чтобы импортировать только эти. Как я могу узнать, какие файлы изменились? Возможно, это не только один коммит до слияния, обычно есть еще коммиты.

Как я могу получить список измененных файлов?

3 ответа3

4

git diff --name-only SHA1 SHA2

Используйте git log чтобы получить git commit id. Используйте просто git diff SHAx если вы хотите использовать diff против последней головы, которую вы потянули.

Перед тем, как делать git pull делайте git log или git status чтобы получить SHAx. Вы можете сделать git fetch вместо pull и сделать log и diff перед слиянием.

2

Я использовал git reflog сразу после того, как сделал git pull чтобы получить что-то вроде:

SHA1 HEAD@{0}: pull: Fast-forward
SHA2 HEAD@{1}: checkout: moving from somewhere to anotherplace

SHA сразу после того, как читается «тянуть: перемотка вперед», является тем, где вы были до тяги.

После этого я использовал git diff --name-only SHA2 из другого ответа, который даст вам список файлов, которые были изменены с этого коммита до вашего текущего состояния.

Я не уверен на 100%, как это работает для вытягиваний с большим количеством изменений и слияний, но для простого ускоренного перехода это сработало очень хорошо.

2

Самый простой способ, который я нашел, это

git diff --name-only HEAD@{0} HEAD@{1}

поскольку HEAD@{n} означает n-е предыдущее значение HEAD

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .