здесь https://stackoverflow.com/a/35434714/5305907 описан способ делать то, что вы ищете. эффективно:
git diff -U1 | grepdiff 'console' --output-matching = hunk
Показывает только фрагменты, соответствующие заданной строке console.
Вы архивируете пути формы top-tree/stuff
и исключаете пути формы /home/skrowten/top-tree/stuff
. Ваши шаблоны исключения никогда ничему не соответствуют.
Простое решение
tar -czvf archive.tar.gz --exclude=top-tree/branch1/branch11/branch114 --exclude=top-tree/.git --exclude=top-tree/branch1/branch11/.idea top-tree
Обратите внимание, что если есть, например. a top-tree/subdir/top-tree/.git
, то это тоже будет исключено. Уловка, чтобы избежать этого, состоит в том, чтобы начать путь командной строки с ./
и полагаться на тот факт, что .
всегда будет отображаться только в корне.
tar -czvf archive.tar.gz --exclude=./top-tree/branch1/branch11/branch114 --exclude=./top-tree/.git --exclude=./top-tree/branch1/branch11/.idea./top-tree
Если вас беспокоит начальный ./
, добавьте параметр --transform='s!^\./!!'
к вызову tar.