Как отслеживать, но не этап и как нестационарно, но не отслеживать?
У меня есть два кратких вопроса:
- Как я могу отслеживать файлы, но не создавая их?
- Как я могу заблокировать файлы для фиксации без их устранения?
ПРИМЕЧАНИЕ.. Я знаю, что могу выполнить первоначальную фиксацию для отслеживания файлов и начать с нее с отслеживанием моих файлов. Но возможно ли конкретно выполнить то, что я прошу выше?
Я пытался использовать git add -N <expr>
, но он отслеживает файл и добавляет его для фиксации:
PS C:\> git add -N fileA
PS C:\> git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: fileA
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.md
# modified: composer.lock
# modified: fileA
#
Если я выполняю git reset HEAD fileA
или git rm --cached fileA
, отключает его, но также не проверяет файл.
Эта команда git rm fileA
предлагает мне использовать флаг -f, который удаляет файл в физическом формате.
Итак, можно только отслеживать, но не выполнять сцену, а только нестационарные, но не отформатированные файлы?
Ответы
Ответ 1
Обновление (май 2015 г.)
Я пытался использовать git add -N <expr>
, но он отслеживает файл и добавляет его для фиксации:
Это больше не относится к предстоящему Git 2.5 (Q2 2015).
См. "Файл не попадает в фиксацию после использования git add -N
"
Оригинальный ответ (март 2013 года)
Как я могу отключить файлы для фиксации без их устранения?
Это официальный путь:
git reset HEAD fileA
Но так как это новый файл, вы также не обратили внимание на него (удалите его из индекса, без какого-либо предыдущего фиксации, ссылающегося на него).
Запуск отслеживания файла означает его наличие в индексе (этапе) или фиксации.
Я бы порекомендовал создать ветку для этих файлов, чтобы добавить их/зафиксировать там.
См. "Что такое отслеживаемые файлы и необработанные файлы в контексте GIT?"
- Отслеживаемые файлы - это файлы, которые были в последнем снимке; они могут быть немодифицированы, изменены или поставлены.
- Отслеживаемые файлы - это все остальное - любые файлы в вашем рабочем каталоге, которые не были в вашем последнем снимке и не находятся в вашей промежуточной области (индекс)
Это означает, что для нового файла, нестационарного, это означает, что он не отслеживает его.
(Источник: Pro Git Книга, 2.2 Git Основы - Запись изменений в репозиторий)
(Спасибо, louisfischer за обновление/исправление в комментариях)
См. также "Git - как узнать, отслеживается ли файл Git (по коду выхода оболочки)?".
Ответ 2
Отследить все ваши файлы с помощью git add
. Зафиксируйте все изменения, которые вы хотите совершить, и нажмите на удаленный. Затем запустите свой новый файл с помощью git stash
. Ваш файл будет отслеживаться, но не будет выполнен.
Итак, в вашем примере вы начнете с un-staging fileA. Затем запустите git add README.md
и git add composer.lock
. git commit -m "Committing fun stuff."
. Теперь нам нужно отслеживать новый файл без его постановки, поэтому мы просто делаем git add fileA
, а затем git stash
. Когда вы будете готовы зафиксировать файлA, вы можете запустить git stash pop
для фиксации/нажатия на удаленный.