Commit 51c66dbf authored by wenwen.tang's avatar wenwen.tang 😕

fix(deploy): 修正 pull 未真正生效 —— fetch 带分支名只更新 FETCH_HEAD

`git fetch origin <branch>` 只更新 FETCH_HEAD,**不会**更新
refs/remotes/origin/<branch>,于是随后的 `git reset --hard origin/main`
仍指向旧提交。症状是服务器 repo 停在旧版本(实测停在 0f4af2e8,
落后远端 3 个提交),而 sync 表面上"成功"。

改为不带分支名的 `git fetch origin`,并输出当前提交与"落后远端提交数"
便于肉眼确认同步结果。
parent 741c9c0e
Pipeline #838 canceled with stages
......@@ -133,11 +133,14 @@ def pull(cli):
return False
# 部署副本不应有本地改动;用 fetch + reset --hard 强制与远端对齐,
# 避免历史遗留的本地修改导致 pull 冲突。
# 坑:`git fetch origin <branch>` **只更新 FETCH_HEAD**,不会更新
# refs/remotes/origin/<branch>,于是随后的 `reset --hard origin/main`
# 仍用旧引用 —— 表现为"pull 执行了但代码没变"。必须用不带分支名的 fetch。
rc, o, e = sh(cli,
"cd %s && GIT_TERMINAL_PROMPT=0 git fetch -q origin %s && "
"git reset -q --hard origin/%s && git log --oneline -1 && "
"echo '--- 本次变更文件 ---' && "
"git diff --name-only HEAD@{1} HEAD 2>/dev/null | head -20 || true"
"cd %s && GIT_TERMINAL_PROMPT=0 git fetch -q origin && "
"git reset -q --hard origin/%s && echo '--- 当前提交 ---' && "
"git log --oneline -1 && echo '--- 与远端差异 ---' && "
"git rev-list --count origin/%s ^HEAD 2>/dev/null | sed 's/^/落后远端提交数: /'"
% (REPO_DIR, BRANCH, BRANCH), timeout=900)
if rc != 0:
log(" !! 拉取失败")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment