refactor: 优化 GitPull 函数,移除多余的换行符和空格处理,增强代码可读性,并添加远程分支存在性检查逻辑
This commit is contained in:
parent
2c4dc7f818
commit
1a31652751
@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GitPull 拉取代码,丢弃本地修改
|
// GitPull 拉取代码,丢弃本地修改
|
||||||
@ -28,7 +29,7 @@ func GitPull() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New(string(branchOutput) + err.Error())
|
return errors.New(string(branchOutput) + err.Error())
|
||||||
}
|
}
|
||||||
currentBranch := string(branchOutput)
|
currentBranch := strings.TrimSpace(string(branchOutput)) // 移除换行符和空格
|
||||||
|
|
||||||
// 获取远程仓库名,通常是origin
|
// 获取远程仓库名,通常是origin
|
||||||
remoteCmd := exec.Command("git", "remote")
|
remoteCmd := exec.Command("git", "remote")
|
||||||
@ -39,7 +40,7 @@ func GitPull() error {
|
|||||||
}
|
}
|
||||||
remoteName := "origin" // 默认使用origin,如果没有远程仓库则使用默认值
|
remoteName := "origin" // 默认使用origin,如果没有远程仓库则使用默认值
|
||||||
if len(remoteOutput) > 0 {
|
if len(remoteOutput) > 0 {
|
||||||
remoteName = string(remoteOutput)
|
remoteName = strings.TrimSpace(string(remoteOutput))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 先获取所有远程分支最新信息
|
// 先获取所有远程分支最新信息
|
||||||
@ -50,21 +51,24 @@ func GitPull() error {
|
|||||||
return errors.New(string(fetchOutput) + err.Error())
|
return errors.New(string(fetchOutput) + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 构建远程分支引用
|
||||||
|
remoteBranch := remoteName + "/" + currentBranch
|
||||||
|
|
||||||
|
// 检查远程分支是否存在
|
||||||
|
checkRemoteCmd := exec.Command("git", "rev-parse", "--verify", remoteBranch)
|
||||||
|
checkRemoteCmd.Dir = workDir
|
||||||
|
if checkRemoteErr := checkRemoteCmd.Run(); checkRemoteErr != nil {
|
||||||
|
// 远程分支不存在,只进行本地重置
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// 强制重置当前分支到远程分支(处理远程分支被force push的情况)
|
// 强制重置当前分支到远程分支(处理远程分支被force push的情况)
|
||||||
forceResetCmd := exec.Command("git", "reset", "--hard", remoteName+"/"+currentBranch)
|
forceResetCmd := exec.Command("git", "reset", "--hard", remoteBranch)
|
||||||
forceResetCmd.Dir = workDir
|
forceResetCmd.Dir = workDir
|
||||||
forceResetOutput, err := forceResetCmd.CombinedOutput()
|
forceResetOutput, err := forceResetCmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.New(string(forceResetOutput) + err.Error())
|
return errors.New(string(forceResetOutput) + err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
// 拉取最新代码
|
|
||||||
pullCmd := exec.Command("git", "pull")
|
|
||||||
pullCmd.Dir = workDir
|
|
||||||
pullOutput, err := pullCmd.CombinedOutput()
|
|
||||||
if err != nil {
|
|
||||||
return errors.New(string(pullOutput) + err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user