强制推送git仓库后2台pc同步数据方法
实战-强制推送git仓库后2台pc同步数据方法-20250404(测试成功)
1、故障现象
最近在倒腾一个静态博客,作者在持续迭代,自己想要测试新代码的最新效果,于是在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
2、gpt
从错误信息 fatal: refusing to merge unrelated histories 可以看出,Git 拒绝合并两个不相关的历史记录。这通常发生在以下情况:
- 你本地仓库的历史记录与远程仓库的历史记录完全不同(例如,本地仓库是新建的,或者远程仓库被强制重置过)。
- 你尝试拉取或合并的分支与当前分支的历史记录没有共同祖先。
以下是解决这个问题的几种方法:
一、允许合并不相关的历史记录
如果你确定需要合并不相关的历史记录,可以使用 --allow-unrelated-histories 参数强制合并。
1. 使用 git pull 合并
运行以下命令:
1git pull origin master --allow-unrelated-histories
2. 使用 git merge 合并
如果 git pull 仍然报错,可以手动拉取远程分支并合并:
1git fetch origin
2git merge origin/master --allow-unrelated-histories
3. 解决冲突
如果合并过程中出现冲突,Git 会提示你手动解决冲突。解决冲突后,运行以下命令完成合并:
1git add .
2git commit
二、强制覆盖本地分支(这个符合我的需求)(方案1)(推荐)❤️
如果你不需要保留本地的历史记录,可以直接用远程分支覆盖本地分支。
1. 重置本地分支
运行以下命令:
1git fetch origin
2git reset --hard origin/master
- 注意:这会丢弃本地所有未提交的更改,请谨慎操作。
2. 清理本地仓库
如果重置后仍然有问题,可以清理本地仓库并重新拉取:
1git clean -fd
2git pull origin master
三、重新克隆仓库(方案2)
如果以上方法都无法解决问题,可以删除本地仓库并重新克隆:
1cd ..
2rm -rf vitepress-theme-teek-one-private
3git clone https://gitee.com/onlyonexl/vitepress-theme-teek-one-private.git
四、检查远程仓库状态
如果问题仍然存在,可能是远程仓库的历史记录被强制重置或修改。你可以检查远程仓库的提交历史:
1git log origin/master
如果发现远程仓库的历史记录被修改,请联系仓库管理员确认是否需要同步。
五、总结
| 方法 | 适用场景 |
|---|---|
| 允许合并不相关的历史记录 | 需要保留本地和远程的历史记录,并手动解决冲突。 |
| 强制覆盖本地分支 | 不需要保留本地历史记录,直接用远程分支覆盖。 |
| 重新克隆仓库 | 本地仓库无法修复,重新克隆是最简单的方法。 |
| 检查远程仓库状态 | 确认远程仓库是否被强制重置或修改。 |
根据你的需求选择合适的方法。如果还有其他问题,欢迎随时提问!
3、亲自测试
二、强制覆盖本地分支(这个符合我的需求)(方案1)
如果你不需要保留本地的历史记录,可以直接用远程分支覆盖本地分支。
1. 重置本地分支
运行以下命令:
1git fetch origin
2git reset --hard origin/master
- 注意:这会丢弃本地所有未提交的更改,请谨慎操作。
2. 清理本地仓库
如果重置后仍然有问题,可以清理本地仓库并重新拉取:
1git clean -fd
2git pull origin master
自己测试记录:
1.检查下状态

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 data
2.强制覆盖本地
1git fetch origin
2git reset --hard origin/master
- 注意:这会丢弃本地所有未提交的更改,请谨慎操作。

3.验证
感觉是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
- 可以看到,gitee这里最新提交commit id和work pc上本地仓库的一致,完美。

- 本地构建下观察效果


4、总结
提示
以下适用于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

