豪华的 git -add 不适用于通配符



我正在尝试添加(编辑:删除操作)这些文件中的文本"已生成",但它不起作用。我正在使用PowerShell。

#       deleted:    Apica.WebPerformance.Web.Controllers/SharedController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/SidebarController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/SubscriptionController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/ToolsController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/UnauthorizedController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/UrlCheckController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/UrlCheckWizardController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/UserSessionContextController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/UserSessionContextDataController.generated.cs
#       modified:   Apica.WebPerformance.Web.Controllers/ViewModels/Checks/CheckListViewModel.cs
#       modified:   Apica.WebPerformance.Web.Controllers/ViewModels/Checks/ChecksOverviewViewModel.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/WebSocketCheckWizardController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/WebSocketJmsCheckWizardController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/WidgetsController.generated.cs
#       deleted:    Apica.WebPerformance.Web.Controllers/WizardController.generated.cs
#       modified:   Apica.WebPerformance.Web/Assets/Common/Css/jquery.multiSelect.css
#       modified:   Apica.WebPerformance.Web/Views/Examples/MultiSelect.cshtml
#
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add *generated.cs
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated.cs'
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated*'
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add *generated.cs
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated.cs'
C:git_apicaWebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> 

这些命令中没有一个实际执行任何操作。然而,它一个文件接一个文件地工作。

也许是这样,好先生

find | grep generated.cs | xargs git add

您的命令似乎有两个小问题

  1. 看起来要暂存的文件是shell所在位置的下一个目录,因此需要添加一个前导*
  2. 您希望暂存已删除的文件。有两种方法可以在每个删除的文件中调用git rm <file name>或使用add命令的-u标志。来自文件(重点矿):

    -u
    --更新
    仅与索引中已跟踪的文件匹配,而不是与工作树匹配。这意味着它永远不会暂存新文件,但它将暂存被跟踪文件的修改后的新内容,并且如果工作树中的相应文件已被删除,它将从索引中删除文件

git add -u **.generated.cs应该起作用。

这里的问题是通配符只会扩展到文件系统上的文件名(因为shell正在进行扩展,而不是git)。由于您已经删除了文件,它们不在文件系统中,因此您需要一个不同的命令。有两种简单的方法可以添加删除操作。

git add -u

这将向索引添加所有修改(包括删除)。

git add full/path/to/deleted/file

将添加删除。

或者,如果使用git rm删除文件,则会自动为您添加删除操作。

要获得已删除文件名的列表,此命令应该有效:

git status --porcelain | awk '/^ D/ {print $2}'

然后,您可以按照Steven Penny的建议将结果导入xargs

最新更新