存储库不干净

Repository is not clean

正在更新 angular 7 到 angular 8,我使用命令 $ ng update @angular/cli@v8 @angular/core@v8 成功更新到 angular/cli angular/core。 我也使用了 angular material,所以我想更新 material 然后我用 $ ng update @angular/material@v8 更新。 但是在 运行 命令之后我得到了 Repository is not clean. Please commit or stash any changes before updating.

所以我在更改 git 之前提交,然后我再次尝试使用相同的命令,然后也收到相同的消息。现在没有要提交或隐藏的文件。

这是 package.json 文件的依赖项: "dependencies": { "@angular/animations": "^8.0.0", "@angular/cdk": "^7.3.7", "@angular/common": "^8.0.0", "@angular/compiler": "^8.0.0", "@angular/core": "^8.0.0", "@angular/forms": "^8.0.0", "@angular/material": "^7.3.7", "@angular/platform-browser": "^8.0.0", "@angular/platform-browser-dynamic": "^8.0.0", "@angular/router": "^8.0.0", "core-js": "^2.5.4", "hammerjs": "^2.0.8", "ngx-loading": "^3.0.1", "rxjs": "6.5.2", "underscore": "^1.9.1", "zone.js": "~0.9.1" }, "devDependencies": { "@angular-devkit/build-angular": "~0.800.0", "@angular/cli": "~8.0.2", "@angular/compiler-cli": "^8.0.0", "@angular/language-service": "^8.0.0", "@types/jasmine": "~2.8.6", "@types/jasminewd2": "~2.0.3", "@types/node": "~8.9.4", "bootstrap-sass": "^3.3.7", "codelyzer": "^5.0.1", "jasmine-core": "~2.99.1", "jasmine-spec-reporter": "~4.2.1", "karma": "~1.7.1", "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.0", "karma-jasmine": "~1.1.1", "karma-jasmine-html-reporter": "^0.2.2", "karma-scss-preprocessor": "^3.0.0", "protractor": "~5.3.0", "ts-node": "~5.0.1", "tslint": "~5.9.1", "typescript": "~3.4.5" }

这是我收到的消息: D:\test>ng update @angular/material@v8 Repository is not clean. Please commit or stash any changes before updating.

我删除了 node_modules 文件夹并在 $ npm install --save 的帮助下重新安装。安装后我再次尝试,然后也收到相同的消息。

有谁知道,如何更新material?

运行 git reset --hardgit stash 再试一次。

您提到您有未跟踪的文件。这些导致检查失败(具有未跟踪文件的 git 存储库被认为是不干净的)。有关此内容的更多信息 here

您可以在此处查看 ng 工具如何运行此检查:https://github.com/angular/angular-cli/blob/3d25d4cb/packages/angular/cli/commands/update-impl.ts#L351

您可以使用以下方式存储这些文件:

git stash save --include-untracked

并在 运行 更新后取消隐藏它们:

git stash pop

您的其他选择是删除文件或将它们添加到您的 .gitignore

如果您想绕过该警告,您应该使用 --allow-dirty,它适用于 @angular/cli v8.0.1+。

更新 @angular/material 的命令如下所示:

ng update @angular/material@v8 --allow-dirty

要更新所有包,您可以使用:

ng update -all --allow-dirty

这是 Angular 8 中的错误。您可以使用以下命令解决问题:

ng update @angular/cli @angular/core --allow-dirty --force