goland squash遇到couldn‘t squash commits问题

问题

提merge request之前在goland中合并commits,但是在我开发过程中不仅提交了commit,同时还将master的改动merge到了本分支

所以我选中commit之后点击squash就报错说有两个parent不能squash,一整个大无语。在终端操作git rebase也报错

解决

参考stackoverflow的解决方法传送门

我整个流程走下来是没遇到啥问题,但是保险起见,大家可以把工作文件夹复制一份,到拷贝中试试看能不能行,别把改动搞丢了就gg了,慎重慎重慎重!

git reset --soft master
git commit -m "合并所有分支修改"

想看原因可以去传送门,大概意思就是reset将本地分支指针指向了master,但是又没有undo本地的修改,这个时候再提交就形同合并了本地所有的commit

但是这个时候push大概率会遇到说本地分支落后的报错,我直接输入

git push --force

大家根据自身情况选用啊,重要文件上的操作一定要慎重!

在Golang中并发解析Websocket并处理异常重连,可以使用goroutines和channels结合来实现。以下是一个简单的示例: 1. **初始化连接**: 首先创建一个新的websocket连接,并将其传递到一个新的goroutine中去读取消息。 ```go ws, _, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Printf("Failed to upgrade: %v", err) return } go handleMessages(ws) ``` `handleMessages` 函数会在另一个goroutine中运行,接收和解析来自WebSocket的消息。 2. **处理message**: 使用 channels 来处理消息和错误。当有新消息时,将消息放入channel,当发生错误时,也发送到相同的channel。 ```go msgChan := make(chan []byte) // 收到消息的地方 errorChan := make(chan error) // 接收错误的地方 go func() { for { message, err := ws.ReadMessage() if err == io.EOF { log.Println("Connection closed") break } else if err != nil { errorChan <- err break } msgChan <- message } }() ``` 3. **处理错误并重连**: 在主线程中,我们监听错误channel,当接收到错误时,关闭当前连接,然后重连。 ```go for err := range errorChan { if err != nil { log.Printf("Error reading from WebSocket: %v", err) // 关闭连接并等待一段时间后重试 ws.Close() time.Sleep(reconnectDelay) // 重新建立连接 ws, _, err = upgrader.Upgrade(w, r, nil) if err != nil { log.Printf("Failed to reconnect: %v", err) } } } ``` 4. **接收并处理消息**: 在主线程中继续从`msgChan`接收消息并处理它们。 ```go for msg := range msgChan { // 解析和处理消息... } ``` 这样,当遇到异常时,程序能够优雅地捕获错误、关闭老的连接并尽快尝试重新连接,同时保持其他部分的逻辑独立于网络连接的状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值