检出已在工作树中移动的多个文件

我已经将文件从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中做到这一点?


退出*

$ git checkout *.{cpp,h}

用于检出多个文件。 我只是实现了通配符,它​​对我来说效果很好。 对于特定的文件,我们可能需要一个不同的技巧。

我用了:

git checkout -- *.*

在我的Git Bash中。 并且我的工作空间中的所有修改后的文件都被替换为回购中的文件。

我希望它有帮助,谢谢。

链接地址: http://www.djcxy.com/p/6171.html

上一篇: Checkout multiple files which have been moved in the working tree

下一篇: Commit changes only in one directory in Git