您的配置中指定要合并远程的引用 ‘refs/heads/xxx‘,但是没有获取到这个引用。

本文讲述了在使用gitpull时遇到的报错,由于本地分支关联的远程仓库分支被删除。解决方法包括先取消本地分支与远程的关联,然后重新设置推送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因

有时候git pull的时候会遇到这个报错,是因为本地分支关联的远程仓库分支被删除了。经常出现在修改分支名再提交到远程的时候,错误操作会引起这个问题。

解决办法

  1. 先将本地的分支与远端分支取消关联
    git branch --unset-upstream
  2. 然后再重新推送本地到远端分支
    git push --set-upstream origin branch_name
二、Git配合Gerrit实践 打开cmd进行操作: 1. git config --global user.name “xxx”: 设置全局 Git 用户名,用于标识提交者的身份 2. git config --global user.email “xxx”: 设置全局 Git 邮箱地址,用于关联提交记录与开发者账户(需与 Gerrit 账户绑定的邮箱一致) 3. ssh-keygen -t rsa: 生成 RSA 类型的 SSH 密钥对,用于加密认证。避免每次 Git 操作(如 git push)时手动输入密码,提升效率并减少密码泄露风险 4. type C:\Users\admin\.ssh\id_rsa.pub: 在 Windows 系统相应文件中查看公钥文件内容,并将公钥粘贴到 Gerrit 的 SSH Key 管理页面以实现无密码登录 打开git bash进行操作: 5. $ git clone "ssh://nanchanjuan@pdgerrit.tp-link.com:29418/CDD/CLOUD/training-2025" && scp -p -P 29418 nanchanjuan@pdgerrit.tp-link.com:hooks/commit-msg "training-2025/.git/hooks/": 克隆gerrit服务器仓库项目到本地 6. $ cd training-2025/: 进入克隆的项目 7. $ git branch -a: 查看现有分支 8. $ git switch -c nanchanjuan:(git版本:2.29) 创建本地nanchanjuan分支,并切换到该分支 9. $ mkdir nanchanjuan: 创建以我的名字命名的文件夹 10. $ cd nanchanjuan/: 进入nanchanjuan文件夹 11. $ echo "hello gerrit" > a.txt: 创建a.txt文件,并写入hello gerrit 12. $ git add . : 将a.txt添加到暂存区 13. $ git commit ./ -m "commit 1": 将a.txt提交到本地仓库,并将该提交命名为“commit 1” 14. $ git log --all --author="nanchanjuan": 查看我的提交记录 15. git pull --rebase: 同步远程代码,在这之前需要在gerrit上先创建nanchanjuan远程分支 16. $ git push origin HEAD:refs/for/nanchanjuan: 推送到远程我的分支上。通过 git push origin 分支名的方式将会被禁止。因为这种提交方式不会进入代码评审的流程,而是直接将代码合并到正式的 git仓库里 17. $ echo "hello git and gerrit" > a.txt: 修改a.txt 18. $ git add .: 添加到暂存区 19. $ git pull --rebase 同步远程代码 20. $ git commit ./ -m "commit 2": 进行第二次提交 21. $ git push origin HEAD:refs/for/nanchanjuan: 推送到远程分支,待评审 22. $ vim a.txt: 修改a.txt 23. $ git add . : 添加到暂存区 24. $ git commit --amend: 修改最近一次提交。不要使用git commit –amend -m “modify message”中 -m参数的提交方式,这样Change-Id会被改变,正确的方式是不加-m参数,使用vim编辑器来编辑提交信息。 25. $ git pull --rebase: 同步远程代码 26. $ git push origin HEAD:refs/for/nanchanjuan: 推送到远程 类似操作,提交commit 3~5 27. $git log: 查看提交历史. Commit 5:105450b356cc2815189c4f2febcbb673bbca0d8c commit 3:1095ce541e7d95e815b72a0f8c458611929085e5 commit 2:7893a95be42955c86a7d7a656cfb51a2a8927ade 28. $ git rebase -i 7893a95: 从第commit 3 开始交互式变基,注意:commitId应该填写commit 3的前一个commit的id(也就是commit 2的id) 29. $ vim a.txt: 修改commit 3的a.txt文件内容 30. $ git add .: 添加到暂存区 31. $ git commit --amend: 提交patch,注意不要直接加 -m 参数 Commit 3 新的哈希值:126a175ac0f0b6da8d05862d39ace048fe0ed806 32. $ git rebase --continue: 继续变基,提示当前提交(commit 3)修改的 a.txt 内容与后续提交(commit 4)修改的内容存在重叠,Git 无法自动合并,需手动解决冲突 33. $ cat a.txt: 展示冲突内容如下: a) Hello git and gerrit! b) <<<<<<< HEAD c) This is re-commit 3 file. d) ======= e) This is commit 4 file. f) >>>>>>> 89ea232 (commit 4) 34. $ vim a.txt: 使用vim编辑器手动解决冲突,仅保留commit 3的文件内容,删除commit 4的文件内容 35. $ git add .: 添加修改到暂存区 36. $ git rebase --continue: 继续变基,提示有冲突,类似操作继续解决,直到成功rebase 37. $ git pull --rebase: 同步远程代码 38. $ git push origin HEAD:refs/for/nanchanjuan: 推送到远程分支 39. $ git rebase -i HEAD~3: 变基到commit 3,以完成将commit 5 rebase到commit 3 40. $ vim a.txt $ git add a.txt $ git rebase --continue 解决冲突后继续变基 41. $ git push origin HEAD:refs/for/nanchanjuan: 推送到远程仓库 42. $ vim a.txt $ git add a.txt $ git commit -m “commit 6” 修改文件,提交commit 6 43. $ git reflog: 查询引用日志: 297ce75 (HEAD -> nanchanjuan) HEAD@{0}: commit (amend): commit 6 50f9314 HEAD@{1}: commit: commit 6 4427983 HEAD@{2}: rebase (continue) (finish): returning to refs/heads/nanchanjuan 4427983 HEAD@{3}: rebase (continue): rebase commit 5 to commit 3 44. $ git reset --soft HEAD@{1}: 软重置(删除操作记录,但不删除修改代码),成功撤销commit 6 patch. 45. $ git pull --rebase $ git push origin HEAD:refs/for/nanchanjuan 推送到远端仓库 46. $ git revert HEAD: 撤销commit 6 47. $ gitdir=$(git rev-parse --git-dir) $ scp -p -P 29418 nanchanjuan@pdgerrit.tp-link.com:hooks/commit-msg ${gitdir}/hooks/ $ git commit --amend --no-edit $ git push origin HEAD:refs/for/nanchanjuan 安装hooks,并推送到远端仓库 根据这个输入命令记录,在第34步骤解决冲突时,我是不是做错了,因为我git log以后本地没有commit 4 和5 了。正确的做法是基于new commit 3,修改a.txt的内容,而不是只保留new commit 3 的内容?
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vgbire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值