2

У меня есть git-репозиторий, назовите его myscripts/ . Внутри myscripts/ находятся подкаталоги perl/ , python/ и ruby/ . По какой-то причине, когда я редактирую код в одном из подкаталогов, Git забывает, что подкаталог является частью репозитория.

$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git commit -a
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   ./
$ git add .
$ git commit -a

Я должен делать это снова и снова, и я не знаю почему.

1 ответ1

1

Когда вы запускаете git commit , Git создает новый коммит с содержимым индекса. Индекс содержит текущий HEAD, а также любые изменения, которые вы внесли с помощью git add или git rm .

Однако git commit принимает ключ -a . Страница руководства говорит об этом переключателе:

Скажите команде автоматически помещать файлы, которые были изменены и удалены, но новые файлы, о которых вы не сообщили git, не будут затронуты.

Это означает, что когда вы запускаете git commit -a , Git будет вносить изменения только в файлы, которые существуют в текущем HEAD.

Поэтому вы должны запустить git add хотя бы один раз для каждого файла или каталога, который вы хотите отслеживать:

$ cd myscripts/
$ cd perl/
$ vi hello.pl
...
$ git add .               # Add each file in this directory to the index
$ git commit              # Commit this version of hello.pl
$ vi hello.pl             # Edit hello.pl some more
... edit some more ...
$ git commit -a           # Commits the changes to hello.pl

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