git-add不';不能使用通配符
我试图添加(编辑:删除操作)这些文件中的文本“生成”,但它不起作用。我在用PowerShellgit-add不';不能使用通配符,git,posh-git,Git,Posh Git,我试图添加(编辑:删除操作)这些文件中的文本“生成”,但它不起作用。我在用PowerShell # deleted: Apica.WebPerformance.Web.Controllers/SharedController.generated.cs # deleted: Apica.WebPerformance.Web.Controllers/SidebarController.generated.cs # deleted: Apica.W
# 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_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add *generated.cs
C:\git_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated.cs'
C:\git_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated*'
C:\git_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add \*generated.cs
C:\git_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]> git add '*generated.cs'
C:\git_apica\WebPerformance.Web [ViewModelRefactor +6 ~2 -0 | +0 ~6 -52]>
所有这些命令实际上都没有任何内容。不过,它可以一个文件一个文件地工作。也许是这样,好先生
find | grep generated.cs | xargs git add
也许是这个,好先生
find | grep generated.cs | xargs git add
看起来您的命令有两个小问题
*
add
命令的-u
标志。
从文件(重点矿山):
-u--更新
仅匹配索引中已跟踪的文件,而不是工作树中的文件。这意味着它将永远不会暂存新文件,但它将暂存已修改的跟踪文件的新内容,如果已删除工作树中的相应文件,它将从索引中删除文件
git add-u*\*.generated.cs应该可以工作。看起来您的命令有两个小问题
看起来您要暂存的文件是shell所在位置的下一个目录,因此您需要添加一个前导的*
您希望暂存已删除的文件。有两种方法可以执行此操作:调用每个已删除的文件或使用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
。这里的问题是,通配符只会扩展到文件系统上的文件名(因为shell正在进行扩展,而不是git
)。由于已删除文件,这些文件不在文件系统中,因此需要使用其他命令。有两种简单的方法可以添加删除操作
git add -u
这将向索引添加所有修改(包括删除)
git add full/path/to/deleted/file
将添加删除
或者,如果您使用git rm
删除文件,则会自动为您添加删除操作
要获取已删除文件名的列表,此命令应起作用:
git status --porcelain | awk '/^ D/ {print $2}'
然后,您可以按照Steven Penny的建议,将结果导入xargs
。这应该行得通。你能用一个新的测试库试试吗?可以,我用的是PoshGit。我也认为这真的应该奏效,但我不明白为什么不行。哦,我忘了说这些文件实际上被删除了,我想把它们删除。(红色)请看我的回答,依赖shell查找已删除文件的命令将无法工作,因为文件系统中不再存在这些文件。@AndrewMyers-u
匹配索引中的文件,而不是工作树中的文件,因此,即使文件不在文件系统中,给出一个模式也会起作用。@r0管理git文档的编写方式听起来好像git正在处理文件全局。但这不是unixshell的工作方式。git甚至从未看到未展开的文件glob,shell将其展开。git然后处理生成的文件列表。验证这一点很简单。只需删除当前目录中的一个文件,然后运行git add-u*
。将不会添加已删除的文件。我没有访问Powershell的权限,它确实依赖git来处理glob,但如果git实现的语义不是unix shell的语义,我会感到惊讶。这应该是可行的。你能用一个新的测试库试试吗?可以,我用的是PoshGit。我也认为这真的应该奏效,但我不明白为什么不行。哦,我忘了说这些文件实际上被删除了,我想把它们删除。(红色)请看我的回答,依赖shell查找已删除文件的命令将无法工作,因为文件系统中不再存在这些文件。@AndrewMyers-u
匹配索引中的文件,而不是工作树中的文件,因此,即使文件不在文件系统中,给出一个模式也会起作用。@r0管理git文档的编写方式听起来好像git正在处理文件全局。但这不是unixshell的工作方式。git甚至从未看到未展开的文件glob,shell将其展开。git然后处理生成的文件列表。验证这一点很简单。只需删除当前目录中的一个文件,然后运行git add-u*
。将不会添加已删除的文件。我没有访问Powershell的权限,而且它确实依赖git来处理glob,但是如果git实现的语义不是unix shell的语义,我会感到惊讶。由于缺少参数,所以无法工作,但是为了做这么简单的事情,这似乎有些过分了。谢谢你的贡献!由于疏忽,没有工作