Подтвердить что ты не робот

Файл сцены по имени файла, независимо от каталога - Git

У меня очень вложенные каталоги в проекте, и я ленивый программист.

Скажем, у меня есть имя файла EventEditor.foo Я хочу создать свой файл независимо от того, находится ли он в корневом каталоге или ./src/holy/sweet/mother/of/baby/raptor/jesus/this/is/a/long/hiearchy/EventEditor.foo

Моя цель - быть всем, "Yo Git, добавить EventEditor" и bam. Он ставит его со мной, только набирая что-то вроде git add *EventEdi*. Это возможно? Или я мечтаю?

4b9b3361

Ответ 1

Если вы хотите совместить глобус рекурсивно при использовании git add, запустите glob, в который вы проходите, в git add с помощью каталога имя (например, . для текущего каталога) и убедитесь, что glob находится в кавычках, так что Git может интерпретировать его вместо оболочки:

git add "./*EventEdi*"

Полный пример:

$ git init git-add
Initialized empty Git repository in /Users/lambda/tmp/stackoverflow/git-add/.git/
$ cd git-add/
$ mkdir -p foo/bar/baz
$ touch foo/bar/baz/some-long-filename.txt
$ git add "./*long-filename*"
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached ..." to unstage)
#
#   new file:   foo/bar/baz/some-long-filename.txt
#

Из руководства :

Fileglobs (например, *.c) можно указать, чтобы добавить все соответствующие файлы. Также может быть предоставлено имя ведущего каталога (например, dir для добавления dir/file1 и dir/file2) для рекурсивного добавления всех файлов в каталог.

Ответ 2

Если вы работаете в Linux, вы можете легко использовать что-то вроде:

find . -name EventEditor.foo -exec git add {} \;

Ответ 3

Ответ Брайана довольно изменчив;) Но вы также можете найти полезное:

git add -i

или

gitg

Ответ 4

Я написал небольшой инструмент (git-number), который позволяет мне использовать числа вместо имен файлов при работе с файлами в git.

"git number" запускает git статус и вставляет номер для каждого отображаемого имени файла последовательно.

После этого я могу использовать эти числа вместо имен файлов, когда git что-то делает.

Итак, в вашем случае я могу сэкономить много ввода:

$ ga 1

(Предполагая, что 1 - это число, связанное с очень/глубоко/вложенным/файлом/с-неприличным-long_and_tortured_name)

Это выполнимо после того, как я это сделал:

$ alias gn='git number'
$ alias ga='git number add'

$ gn
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#1      very/deeply/nested/file/with-obscenely-long_and_tortured_name
#2      README
nothing added to commit but untracked files present (use "git add" to track)
$ ga 1

Вы можете узнать больше о git -number в github: https://github.com/holygeek/git-number

Ответ 5

Ответ Брайана напрямую касается вашей потребности, но я должен отметить, что если /very/deeply/nested/file/with-obscenely-long_and_tortured_name уже отслеживается Git, и вы только что изменили его, вы можете сказать git add -u, чтобы сгенерировать эти изменения. Если есть другие изменения, которые вы не хотите выполнять, это может быть git add -up, чтобы вы решали кусочно.

Ответ 6

Я использую комбинацию следующих скриптов, чтобы делать то, что вы просите.

У меня есть aliased для gga:

git ls-files -m -o --exclude-standard | grep $* | xargs -r git add

использование:

gga raptor # stages everything in raptor directory
gga Event #stages all files with Event in the name

вы получаете идею.

Если я должен быть более конкретным в отношении вещей (потому что grepping недостаточно специфичен), я просто использую

git ls-files | Grep

Затем я просто копирую и вставляю полный путь к файлу в git add.

Ответ 7

Я помещаю это в мой профиль bash для добавления и проверки длинных имен файлов

function gal() {
   git add "./*$1*"
}

function gcl() {
   git co -p "./*$1*"
}

gal "имя файла"

добавит файл, в котором есть имя файла строки. Это подстановочно. Просто нужно использовать уникальное имя в качестве параметра

Ответ 8

В последних версиях git вы можете просто сделать ожидаемый

git add '*EventEditor.foo'