问题描述

在 gitlab 私有服务器上托管了 hexo 项目,因为直接在 gitlab 项目上使用了 IDE 在线修改文件,忘记了在本地使用 git pull 更新,结果在本地修改了文件提交推送到远程后报:

1
2
3
4
5
6
7
8
leazhi@leazhi-ubuntu2310:/data/gitlab/111111.com$ git push
To gitlab.linuser.com:leazhi/111111.com.git
! [rejected] main -> main (fetch first)
error: 推送一些引用到 'gitlab.linuser.com:leazhi/111111.com.git' 失败
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。

按照提示 执行 git pull 又报:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
leazhi@leazhi-ubuntu2310:/data/gitlab/111111.com$ git pull
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (3/3), 1.18 KiB | 1.18 MiB/s, 完成.
来自 gitlab.linuser.com:leazhi/111111.com
5c0531c..efcf9cc main -> origin/main
提示:您有偏离的分支,需要指定如何调和它们。您可以在执行下一次
提示:pull 操作之前执行下面一条命令来抑制本消息:
提示:
提示: git config pull.rebase false # 合并
提示: git config pull.rebase true # 变基
提示: git config pull.ff only # 仅快进
提示:
提示:您可以将 "git config" 替换为 "git config --global" 以便为所有仓库设置
提示:缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、--no-rebase,
提示:或者 --ff-only 参数覆盖缺省设置。
fatal: 需要指定如何调和偏离的分支。

解决方法

根据提示信息,我们直接选择合并,执行命令:

1
leazhi@leazhi-ubuntu2310:/data/gitlab/111111.com$ git config pull.rebase false

然后再次执行 git pull 将 gitlab 更新的代码拉到本地

1
2
3
4
5
leazhi@leazhi-ubuntu2310:/data/gitlab/111111.com$ git pull
Merge made by the 'ort' strategy.
.gitlab-ci.yml | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 .gitlab-ci.yml

最后,在执行 git push 即可!