我已将文件从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}
。我知道如何取消暂停(例如,链接here是有帮助的)。我希望避免做的是输入大量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做到这一点?
答案 0 :(得分:28)
逃离*
:
$ git checkout \*.{cpp,h}
答案 1 :(得分:2)
用于签出多个文件。我刚刚实现了通配符,它对我来说效果很好。 对于特定文件,我们可能需要不同的技巧。
我用过:
git checkout -- *.*
在我的Git Bash中。并且我工作区中的所有修改过的文件都被回购中的文件替换。
我希望它有所帮助,谢谢。