5

Это поймало меня пару раз. У меня есть терминал, открытый внутри GIT-репозитория. Я делаю git status чтобы увидеть все изменения в репозитории. Затем я делаю git add -A , git commit -m "Some text" и git push чтобы отправить все на GitHub.

Но... Я не понимаю, что рабочий каталог моего терминала не является корневым каталогом репозитория, поэтому на самом деле git add -A не фиксирует все изменения, о которых мне говорил git status , только изменения в файлах внутри рабочего каталога терминала.

Как я могу git add из репозитория GIT (необязательно имея корневой каталог в качестве рабочего каталога), чтобы он добавлял все изменения в репозиторий?

3 ответа3

12

Вы можете использовать git add -A :/ .

Pathspec, который начинается с двоеточия, сообщает git, что он должен интерпретировать оставшуюся часть этого pathspec из базы репозитория, а не из текущего каталога. После косой черты он ссылается на корень хранилища, в результате чего git add добавляет все изменения.

Это требует git 1.7.6 или новее.

2

git commit -a -m commit_msg сделает то, что вы хотите. Обратите внимание, что с помощью этой команды флаг -a выполняет добавление, поэтому не делайте отдельное git add перед фиксацией.

2

Поскольку мой другой ответ требует более новой версии git, есть альтернатива, которая, возможно, будет работать со старыми версиями.

Псевдонимы, в которых расширение начинается с восклицательного знака, рассматриваются как отдельные команды оболочки и определяются как выполняющиеся на верхнем уровне хранилища. Таким образом, вы можете определить такой псевдоним и использовать его вместо git add:

git config --global alias.addroot '!git add'
git addroot -A

Или вы можете включить опцию -A в псевдоним.

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