如何修复已取消的编辑,在shell中未进行任何更改
我跑 要更改我的一个播客的版本(此命令在我的文本编辑器中打开一个临时文件,然后我通常编辑并关闭此临时文件),甚至在我在文本编辑器中关闭此临时文件之前,我可以在bash中看到以下注释如何修复已取消的编辑,在shell中未进行任何更改,shell,kubernetes,sh,fish,Shell,Kubernetes,Sh,Fish,我跑 要更改我的一个播客的版本(此命令在我的文本编辑器中打开一个临时文件,然后我通常编辑并关闭此临时文件),甚至在我在文本编辑器中关闭此临时文件之前,我可以在bash中看到以下注释 kubectl edit deployment 在我安装fish之前,它还可以,我尝试切换到bash,但也没有帮助 如何修复它?这类事情很可能是由于它打开了一个分叉而不是停留的编辑器 这意味着您需要将$EDITOR设置为等待的编辑器。例如,nano,vim或emacs应该可以工作,例如,如果您使用升华文本,您必须使
kubectl edit deployment
在我安装fish之前,它还可以,我尝试切换到bash,但也没有帮助
如何修复它?这类事情很可能是由于它打开了一个分叉而不是停留的编辑器 这意味着您需要将$EDITOR设置为等待的编辑器。例如,
nano
,vim
或emacs
应该可以工作,例如,如果您使用升华文本,您必须使用subl-w
明确告诉它等待
现在还不太清楚你正在运行哪个shell。如果是bash,在fish run
set-gx EDITOR subl-w
中运行export EDITOR=“subl-w”
(如果使用fish<3.0,则运行“subl-w”
。
使用$EDITOR变量的方法可以实现目标,但会更改默认的命令行编辑器。这可能会影响依赖于此设置的其他程序(例如crontab、edquota)
最好依赖$KUBE_编辑器变量。例如,对于一次性使用,您可以尝试:
Edit cancelled, no changes made.
(请参阅)使用vim,当您尝试保存它时,会在退出编辑器时,保存在
/tmp/
路径中指定的编辑副本以及错误消息
这相当于使用获取资源,在文本编辑器中编辑它,然后使用更新版本应用资源:
KUBE_EDITOR="nano" kubectl edit deploy/hello-world
然后删除该文件
kubectl get deployment my-nginx -o yaml > /tmp/nginx.yaml
vim /tmp/nginx.yaml
kubectl apply -f /tmp/nginx.yaml
deployment.apps/my-nginx configured
因此,基本上对保存在/tmp/
中的文件使用apply
。当kubectl没有选择您所做的更改时,例如由于YAML不正确,也可能发生此问题
- 请做你确定的其他更改
- 保存后,检查是否仍遇到相同的问题
问题复制示例:
- spec.selector.app:xxx“重复,无效
- 最后一个将保留;第一个将被忽略
- 因此,如果您只添加了第一个,则不会进行任何更改
什么编辑器应该启动?我使用sublime,它确实启动了。但当它启动时,我已经看到编辑被取消,没有做任何更改。
在这种情况下,$editor在大多数情况下都是错误的。一个不停止的$editor也会混淆git,所以你不应该使用它。如果你真的不能使用editor,你也可以尝试patc正在部署。请参阅此操作适用于VSCode-KUBE\u EDITOR=“code-w”kubectl edit…
@billett即使在win上重新启动powershell后,我仍然会收到相同的错误。您知道可能出了什么问题吗?
rm /tmp/nginx.yaml
spec:
clusterIP: 10.152.183.151
clusterIPs:
- 10.152.183.151
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: xxx
app: rng