Как сравнить локальные и удаленные файлы git?
Мне нужно перечислить все отслеживаемые коммитированные файлы, которые существуют только локально. Скажем, мое локальное репо - это фиксация удаленного репо (на github или gitlab), и это мои локальные отслеживаемые коммитированные файлы:
a.txt
b.txt
А теперь представьте, что в моем удаленном репо есть только один из этих файлов:
a.txt
Какую команду git можно использовать для вывода списка различий между локальными и удаленными репозиториями с точки зрения отслеживаемых зафиксированных файлов? Чтобы быть предельно ясным, какая команда git (git-ls-files, gt-ls-remote, git-ls-tree и т. Д.) Может сгенерировать следующий вывод:
b.txt
РЕДАКТИРОВАТЬ 1: я должен сделать это, не извлекая коммитов из удаленного репо.
РЕДАКТИРОВАТЬ 2: Мне это нужно, чтобы написать крючок git для предотвращения нажатий, но я не уверен, что это хороший вариант использования хуков git.
2 ответа
Думаю, я разобрался:
git fetch origin && comm -2 -3 \
<(sort <(git ls-tree -r master --name-only)) \
<(sort <(git ls-tree -r origin/master --name-only))
Конечный результат:
b.txt
Спасибо Торек и polareper. Ваши предложения очень помогли.