2015-05-03 2 views
2

Для того, чтобы совершить что-то на мерзавца с помощью Git Баш на окнах мне нужно сделать, например .:Как добавить определенные файлы рекурсивно в git?

1.git add * 
2.git commit -m "Commit test" 
3.git push origin master 

таким образом, я посвящаю все изменения. Я хотел бы добавить только определенные файлы (* .h и * .cpp). Решение должно использовать:

ad. 1.: 
git add *.h 
git add *.cpp 

Но таким образом я добавляю только * .h и * .cpp в текущей папке. Вопрос в том, как добавить файлы * .h и * .cpp в текущую папку и вложенные папки одной командой? Нечто вроде:

1.git add *.h and *.cpp and_in_subfolders 
and then: 
2.git commit -m "Commit test" 
3.git push origin master 

Спасибо.

ответ

1

Лучше всего использовать команду bash вместо того, чтобы полагаться на «*», интерпретируемый оболочкой (а не рекурсивно).

find . -type f -name '*.h' -exec git add {} \; 

Другой подход с xargs

find . -type f -name '*.h' -print | xargs git add 
5

Если вы используете

git add *.h 

оболочка будет расширяться подстановочные знаки, используя файлы в текущей папке.

Git может расширить шаблоны по себе, а, кроме того, он делает, что так, как вы хотите (рекурсивно), так что вам просто нужно, чтобы предотвратить оболочку от подстановочных знаков:

git add '*.h' 
+0

Святой корова; Я понятия не имел, что эта функция существует. Спасибо, что обучил меня. –