Git 签出已在工作树中移动的多个文件
我已将文件从Git 签出已在工作树中移动的多个文件,git,Git,我已将文件从Project移动到Project/src。Git的印象是我已经从Project中删除了文件,并在Project/src中创建了新文件 此外,我还希望提交工作树中的多个其他更改。我的git状态: $ git status # On branch feature/cmake # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # new file: .gitignore # ne
Project
移动到Project/src
。Git的印象是我已经从Project
中删除了文件,并在Project/src
中创建了新文件
此外,我还希望提交工作树中的多个其他更改。我的git状态
:
$ 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
我不想签出HEAD
,因为我想保留工作树中的一些更改。我尝试过执行git checkout*{cpp,h}
,它给出了以下内容:
$ git checkout *.{cpp,h}
zsh: no matches found: *.cpp
因为这些文件当前不存在于工作树中,所以我无法签出它们,因为*。{cpp,h}
与任何文件都不匹配
这些文件都在
项目/src
中;可能有一个regex或者我可以运行的东西,ls src
的输出通过管道传输到git checkout
命令中,但是我想知道git是否可以自己完成这项工作。在git中有什么方法可以做到这一点吗 退出*
:
$ git checkout \*.{cpp,h}
用于签出多个文件。我刚刚实现了通配符,对我来说效果很好。 对于特定的文件,我们可能需要不同的技巧 我用过:
git签出--*.
在我的Git Bash中。我工作区中所有修改过的文件都替换为repo中的文件
我希望有帮助,谢谢 如果文件存在于目录中,git(或者shell,我不确定是哪个)接受
*。{cpp,h}
并将其扩展到所有匹配的文件。我的问题是我没有匹配的文件;他们已经转移到src/*.{cpp,h}
了,我正试图找到一种懒散的方法来签出文件,而不必键入git checkout
,git checkout
等等。如果你逃出了星星,它在shell中就不会匹配。试试看:-)嘿。我的错;完全看错了你写的东西。这很有效-非常感谢。很抱歉成为一个noob,但是完整的命令会有所帮助。感谢$git checkout\*.{cpp,h}
将在存储库中检出与shell glob模式*.{cpp,h}
匹配的所有文件。如果没有反斜杠,它将匹配(并扩展到)当前目录中的文件。问题正是在接受的答案中指出的,*
由shell(bash,zsh…)扩展到所有匹配的文件,如果您移动/删除了这些文件,这些文件可能没有。而在此上下文中,\*
通过git
扩展到git跟踪的文件,即,git add
已应用于这些文件。即使文件被移动/删除git checkout\*
也会扩展到这些文件名,直到您提交移动/删除它们。事实上,要提交对file.end
的删除,您必须执行git commit file.end
,但该文件甚至不在那里(但对git来说是这样)。这是非常正确的。谢谢你,乔纳坦。对不起,没有人