Подтвердить что ты не робот

Оформить несколько файлов, которые были перемещены в рабочем дереве

Я переместил файлы с Project на Project/src. Git создается впечатление, что я удалил файлы из Project и создал новые файлы в Project/src.

Кроме того, у меня есть несколько других изменений в рабочем дереве, которые я хочу зафиксировать. Мой git status:


 $ git  status
# On branch feature/cmake
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   new file:   .gitignore
#   new file:   CMakeLists.txt
#   deleted:    Wasa.xcodeproj/project.pbxproj
#   deleted:    Wasa/Wasa.1
#   renamed:    Wasa/main.cpp -> main.cpp
#   new file:   src/CMakeLists.txt  
#  Lots of new files listed here
#
# Changes not staged for commit:
#   (use "git add/rm ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   CMakeLists.txt
#   deleted:    IODevice.h
#  Lots of deleted files listed here.

Я хочу отключить исходные файлы - *.{cpp,h}. Я знаю, как неустранить (ссылка здесь, например, полезна). То, что я хотел бы избежать, это напечатать много git checkout <filename>.

Я не хочу проверять HEAD, потому что некоторые изменения в рабочем дереве я хотел бы сохранить. Я пробовал сделать git checkout *.{cpp,h}, который дает следующее:


$ git checkout *.{cpp,h}
zsh: no matches found: *.cpp

Поскольку файлы в настоящее время не существуют в рабочем дереве, я не могу их проверить, потому что *.{cpp,h} не соответствует никаким файлам.

Все файлы находятся в Project/src; возможно, существует регулярное выражение или что-то, что я мог бы запустить с выходом ls src, переданным в команду git checkout, но я хотел бы знать, может ли Git сделать это для меня сам по себе. Есть ли способ сделать это в git?

4b9b3361

Ответ 1

Сбегите *:

$ git checkout \*.{cpp,h}

Ответ 2

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

Я использовал:

git checkout -- *.*

в моем Git Bash. и все измененные файлы в моей рабочей области были заменены на те, что были в репо.

Я надеюсь, что это поможет, спасибо.