快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
最近在倒腾一个静态博客,作者在持续迭代,自己想要测试新代码的最新效果,于是在2台pc之间同步自己做了更改后仓库代码。(it pc,work pc 2台电脑上同一个仓库代码同步问题)
本人在it-pc 上强制推送一个git仓库后,在另一台pc上拉取时报错了(同一个仓库),该如何解决呢?

126752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
2$ git pull
3remote: Enumerating objects: 1561, done.
4remote: Counting objects: 100% (1561/1561), done.
5remote: Compressing objects: 100% (1331/1331), done.
6remote: Total 1561 (delta 211), reused 1457 (delta 164), pack-reused 0 (from 0)
7Receiving objects: 100% (1561/1561), 17.65 MiB | 41.00 KiB/s, done.
8Resolving deltas: 100% (211/211), done.
9From gitee.com:onlyonexl/vitepress-theme-teek-one-private
10 + 48f0635...6d72b84 master -> origin/master (forced update)
11fatal: refusing to merge unrelated histories
12
1326752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
14$ git pull
15fatal: refusing to merge unrelated histories
16
1726752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
18$ git pull
19fatal: refusing to merge unrelated histories从错误信息 fatal: refusing to merge unrelated histories 可以看出,Git 拒绝合并两个不相关的历史记录。这通常发生在以下情况:
以下是解决这个问题的几种方法:
如果你确定需要合并不相关的历史记录,可以使用 --allow-unrelated-histories 参数强制合并。
git pull 合并运行以下命令:
1git pull origin master --allow-unrelated-historiesgit merge 合并如果 git pull 仍然报错,可以手动拉取远程分支并合并:
1git fetch origin
2git merge origin/master --allow-unrelated-histories如果合并过程中出现冲突,Git 会提示你手动解决冲突。解决冲突后,运行以下命令完成合并:
1git add .
2git commit如果你不需要保留本地的历史记录,可以直接用远程分支覆盖本地分支。
运行以下命令:
1git fetch origin
2git reset --hard origin/master如果重置后仍然有问题,可以清理本地仓库并重新拉取:
1git clean -fd
2git pull origin master如果以上方法都无法解决问题,可以删除本地仓库并重新克隆:
1cd ..
2rm -rf vitepress-theme-teek-one-private
3git clone https://gitee.com/onlyonexl/vitepress-theme-teek-one-private.git如果问题仍然存在,可能是远程仓库的历史记录被强制重置或修改。你可以检查远程仓库的提交历史:
1git log origin/master如果发现远程仓库的历史记录被修改,请联系仓库管理员确认是否需要同步。
| 方法 | 适用场景 |
|---|---|
| 允许合并不相关的历史记录 | 需要保留本地和远程的历史记录,并手动解决冲突。 |
| 强制覆盖本地分支 | 不需要保留本地历史记录,直接用远程分支覆盖。 |
| 重新克隆仓库 | 本地仓库无法修复,重新克隆是最简单的方法。 |
| 检查远程仓库状态 | 确认远程仓库是否被强制重置或修改。 |
根据你的需求选择合适的方法。如果还有其他问题,欢迎随时提问!
二、强制覆盖本地分支(这个符合我的需求)(方案1)
如果你不需要保留本地的历史记录,可以直接用远程分支覆盖本地分支。
1. 重置本地分支
运行以下命令:
1git fetch origin
2git reset --hard origin/master2. 清理本地仓库
如果重置后仍然有问题,可以清理本地仓库并重新拉取:
1git clean -fd
2git pull origin master自己测试记录:

126752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
2$ git pull
3
426752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
5$ git remote -v
6origin git@gitee.com:onlyonexl/vitepress-theme-teek-one-private.git (fetch)
7origin git@gitee.com:onlyonexl/vitepress-theme-teek-one-private.git (push)
8
926752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
10$ git branch -av
11* master 48f0635 [ahead 21, behind 8] update data
12 remotes/origin/HEAD -> origin/master
13 remotes/origin/master 6d72b84 commit data
14
1526752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
16$ git log --oneline
1748f0635 (HEAD -> master) update data
185e3d453 update data
19136da12 update data
20dbcb70f update data
21d61922d update data
220da6eeb update data
23ebd3ded update data
24b496d1e update data
25d7d0cae update data
261429ccc update data1git fetch origin
2git reset --hard origin/master
感觉是OK了哦:

126752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
2$ git status
3On branch master
4Your branch is up to date with 'origin/master'.
5
6nothing to commit, working tree clean
7
826752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
9$ git pull
10Already up to date.
11
1226752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
13$ git remote -v
14origin git@gitee.com:onlyonexl/vitepress-theme-teek-one-private.git (fetch)
15origin git@gitee.com:onlyonexl/vitepress-theme-teek-one-private.git (push)
16
1726752@One MINGW64 /d/vitepress-theme-teek-one-private (master)
18$ git log --oneline
196d72b84 (HEAD -> master, origin/master, origin/HEAD) commit data
2084127b8 commit data
216628c87 commit data
225d6aadf update data
23654cdf4 update data


提示
以下适用于Teeker博客迭代更新时,2台pc间同步仓库代码环境。(1)it-pc上,将作者最新仓库修改完成后,直接强制推送到自己的私有库
1cd /d/
2mkdir teeker-2025.3.14
3cd /d/teeker-2025.3.14/vitepress-theme-teek-one-private
4rm -rf .git
5git init
6git add -A
7git commit -m"03.14 first commit"
8git remote add origin git@gitee.com:onlyonexl/vitepress-theme-teek-one-private.git
9git push -u origin "master" --force(2)work-pc上,从远程私有仓库强制覆盖本地分支
1cd /d/vitepress-theme-teek-one-private
2git fetch origin
3git reset --hard origin/master
4
5git status
6git pull
7git status日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白