我可以在两个文件上使用“git checkout - ”吗?

时间:2015-02-17 05:10:58

标签: git

是否可以在多个文件上使用git checkout来放弃更改?如果是这样,我将如何指定多个文件。感谢。

6 个答案:

答案 0 :(得分:46)

多次运行命令

git checkout -- path/to/file/one
git checkout -- path/to/file/two

或者在同一行中指定多个文件:

git checkout -- path/to/file/one path/to/file/two

您还可以指定整个文件夹,这些文件夹将递归到它们下面的所有文件。

git checkout -- path/to/folder
git checkout -- . # for the current path

答案 1 :(得分:6)

我在用户的git repo目录中运行find,意外地修改了目录中的所有文件。

me@server:/home/me/gitrepo# git status
On branch master
Your branch is up-to-date with 'origin/master'.

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:   .bashrc
    modified:   dir/ec2-user.pem
    modified:   dir/readme.txt
    modified:   dir/root.pem
    modified:   dir/ec2-user.pem
    modified:   dir/readme.txt
    modified:   dir/root.pem
    modified:   dir/ec2-user.pem
    modified:   dir/ec2-user.pem.pub
    modified:   dir/readme.txt
    modified:   dir/root.pem

为了纠正我的错误,我运行了类似这个命令的东西来查找所有修改过的文件,并从master中检出文件。

<强> git status | grep modified | sed 's/^.*modified: //' | xargs git checkout

答案 2 :(得分:1)

可能的选择可能是:

git status --porcelain | cut -c4- | xargs git checkout

答案 3 :(得分:0)

使用以下命令

   git checkout path/to/fileName path/to/fileName2 path/to/fileName3

这将允许您恢复或放弃对文件fileName,fileName2和fileName3的更改

注意:路径名中的空格会导致git出现问题。在这种情况下,使用单引号''来包含路径名。

答案 4 :(得分:0)

列出一个文件中的两个(或多个)文件。

在Git 2.25(2020年第一季度)中,更多命令学习了“ --pathspec-from-file”命令行选项which I previously mentioned for git commit

这意味着您可以将old confusing git checkout commandnew command(Git 2.23+)git restore与文件的列表一起使用(签出/恢复) ,而不是在不同文件上多次重复执行同一命令。

请参见commit a9aecc7commit cfd9376commit 8ea1189commit 6fdc9adcommit 1d022bbcommit bebb5d6commit 21bb308(2019年12月3日)由Alexandr Miloslavskiy (SyntevoAlex)
(由Junio C Hamano -- gitster --commit 135365d中合并,2019年12月25日)

  

checkout, restore:支持--pathspec-from-file选项

     

签名人:Alexandr Miloslavskiy

     

为简单起见而做出的决定:

     
      
  1. 目前,即使--pathspec-from-file不是--patch,也<file>被宣布与stdin不兼容。这样的用例不是真的期望的。
  2.   
  3. 不允许在args和文件中都传递pathspec。
  4.   
     

you must specify path(s) to restore块已向下移动以能够测试pathspec.nr,因为对argc的测试不再正确。

     

git switch不支持新选项,因为它不希望有<pathspec>个参数。

答案 5 :(得分:0)

对于已经回答的问题,我将对当前路径执行以下操作:

    original payload: 
    {}