Git问题总结

Git问题总结

分支分叉问题

执行 git status 或者 git push 时出现了以下错误:

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 2 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

nothing to commit, working tree clean

问题原因

我在两台电脑上工作,电脑 A 和 B 初始都是 up-to-date,之后我先在 Acommitpush 了几次,然后我现在在电脑 B 中从初始状态编写,然后试图在 commit 之后 push,出现了上述问题(使用同一个本地和云分支)。

问题分析

假设,远程上的 commitA -> B,你在 A 电脑上 commitpush 之后,远程变成了 A -> B -> C -> D。现在,B 电脑上还是 A -> B。然后你 commit 了,那么 B 电脑上就是 A -> B -> E

因为 A -> B -> C -> DA -> B -> E 有一个共同的祖先 B,你在本地多了一个 commit E,远程多了两个 commits CD。这个时候如果你要在 A -> B -> Ebranchpushgit 猜不出到底想保留 CD,还是只要 E,还是都要,就会出现上面的提示。

所以,你需要的是把 B 电脑上的历史线变成 A -> B -> C -> D -> E

问题解决

执行命令

git pull --rebase origin master

# 这里也可以使用merge,但推荐使用rebase

这个命令等同于:

git fetch origin
git rebase origin/master

执行之后,B 电脑上的历史线就会变成 A -> B -> C -> D -> E,然后你就可以 push

git push origin master

致命:拒绝合并不相关的历史记录

今天拉取代码后,准备合并代码,现了下面的这个错误

$ git merge origin master
fatal: refusing to merge unrelated histories

这里的问题,你可能会在 git pull 或者 git push 中都有可能会遇到。

问题原因

因为两个库没有历史联系, git 默认拒绝合并无关的历史,所以出现这个问题

这是因为两个分支是两个不同的版本,具有不同的提交历史。

问题解决

在你操作命令后面加 --allow-unrelated-histories,允许不相关历史提交,强制合并

git merge master --allow-unrelated-histories

如果你是 git pull 或者 git pushfatal: refusing to merge unrelated histories,同理

git pull origin master --allow-unrelated-histories

这里推荐使用 git rebase origin/master 来解决这个问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值