Вносить изменения только в один каталог в Git - PullRequest
45 голосов
/ 03 мая 2011

Я использую Git 1.7.4.1 на Mac 10.6.6.Из командной строки, как я могу зафиксировать изменения только в одном каталоге?Я добавил каталог, выполнив:

git add my-dir

, но, выполнив

git commit -a

, вы увидите список всех изменений в моем репо, и я хочу только зафиксировать и отправить изменения с my-dir.

Ответы [ 7 ]

52 голосов
/ 03 мая 2011

Почему никто не упоминает, что вы можете просто

git commit -m 'message' -- my-dir

Мне кажется, что ОП не привык / не любит использовать область подготовки напрямую. Этот подход также намного безопаснее рекомендовать без дополнительного контекста, потому что есть вероятность, что коммит по умолчанию (из всего, что было сделано) будет

  • совершить больше, чем просто my-dir, если он уже был поставлен
  • приведет к сбивающим с толку результатам, если OP не используется для явного управления промежуточной областью (поскольку рабочее дерево могло быть не синхронизировано с индексом)
37 голосов
/ 03 мая 2011

Опустить вариант -a. Тогда git будет фиксировать только те файлы, которые вы пометили git add.

Вы также можете попробовать зафиксировать каталог, не используя git commit my-dir.

14 голосов
/ 03 мая 2011

Хм, странно. Следующее должно работать. Предполагая, что вы ничего не поставили.

git add my-dir
git commit -m "Commiting first revision of my-dir folder. Very exciting feature!"
git push origin master
6 голосов
/ 27 марта 2016

Basic

git add -- ./myfolder
git commit -m'my comment' -- ./myfolder

С дополнительными файлами и папками

git add -- ./myfolder1 ./myfolder2./some/random/file.txt
git commit -m'cool' -- ./myfolder1 ./myfolder2 ./some/random/file.txt

Что я искал для git bare repo

git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree add -- ./myfolder
git --git-dir=path/to/my/repo --work-tree=path/to/my/working/tree commit -m'my comment' -- ./myfolder

Не забудьте указать пути с пробелами или сумасшедшими символами

4 голосов
/ 04 мая 2011

Сделайте все это одной командой:

git commit -- my-dir
4 голосов
/ 03 мая 2011

Просто подготовьте папку, используя git add, как вы указали, и сделайте коммит без опции -a: git commit -m "Committing stuff".Параметр -a означает фиксацию всех файлов, которые были изменены, даже если они не были подготовлены.

2 голосов
/ 03 мая 2011

Вы будете вносить любые изменения в «область подготовки»;вы можете увидеть их с git status.

флагом -a в git commit -a, в соответствии с man-страницей, говорит git о необходимости «ставить все файлы, которые были изменены или удалены, но не новые файлы»вы не сказали git о "- это не то, что вам нужно

урок должен знать о том, какие опции командной строки делают

Чтобы это исправить, первое, что вы хотите сделать, в соответствии с Как отменить 'git add' перед коммитом? , чтобы удалить все файлы, которые вы случайно добавили с опцией commit -a.Согласно этому ответу, вы должны выполнить команду git rm -r --cached ., и теперь ваши изменения все еще должны быть там, но ничего не ставится.

Теперь вы можете сделать git add my-dir, как вы делали раньше.Тогда вы можете сделать git commit (БЕЗ -a)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...