git本地分支与远程分支不同步pull push操作失败,代码冲突
Author:zhoulujun Date:
代码库迁移,代码添加新库远程地址,或者本地添加新的分支,本地分支没有推送到远程库。或者本地代码与远程代码存在冲突,都会造成push pull 出错。
远程分支与本地分支没有关联
使用git pull push 的时候就会报错
There is no tracking information for the current branch.Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> merged 7xx567x
是因为本地分支和远程分支没有建立联系
使用git命令branch -vv 可以查看本地分支和远程分支的关联关系
git branch -vv
根据命令行提示,使用git命令branch --set-upstream-to 关联本地与远程分支联系
git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字 git branch --set-upstream-to=origin/master master
在进行提交,就好了
远程分支与本地分支代码冲突未合并
git rebaee git pull 更新远端代码的同时如果与本地代码产生冲突。那么冲突的文件中就出现了需要手动合并的部分
pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
HEAD与MERGE-HEAD
本地的push和merge会形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)这样的引用。
HEAD代表本地最近成功push后形成的引用。
MERGE-HEAD表示成功pull后形成的引用。
可以通过MERGE-HEAD或者HEAD来实现类型与svn revet的效果。
git reset –hard FETCH_HEAD
将本地的冲突文件冲掉,不仅需要reset到MERGE-HEAD或者HEAD,还需要–hard。没有后面的hard,不会冲掉本地工作区。只会冲掉stage区。
git pull --rebase
git pull --rebase不同的地方则是当有这些冲突存在时,git帮我们自动创建了一个新的分支,并且git告诉你接下来你要在这个新的分支上处理这个冲突。
rebase in progress; onto 24f42c6
You are currently rebasing branch 'master' on '24f42c6'.
(fix conflicts and then run "git rebase --continue")
并且git还告诉我们 fix conflicts and then run "git rebase --continue",意思是解决冲突然后执行git rebase --continue命令,
其实git rebase --continue的正确操作应该是确认处理好冲突后则将调整好的文件添加到暂存区,并执行git rebase --continue命令告诉git,我已经解决好冲突了,
并且已经将处理后的文件添加到了暂存区,现在可以将这些文件commit了,
简单来讲就是正常的解决冲突过程是
git add .
git commit -m "..."
git push时因为本地仓库代码与远程仓代码有冲突,所以接下来
git pull拉取远程代码,而冲突需要手动解决
解决好后重新进行git add . git commit -m".." git push
而git pull 这一步如果加上了 --rebase的选项,那么第5步操作将变成如下
git add .
git rebase --continue
git push
所以git pull --rebase用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区。
参考文章
git pull --rebase的理解 https://blog.csdn.net/qican_7/article/details/98870789
转载本站文章《git本地分支与远程分支不同步pull push操作失败,代码冲突》,
请注明出处:https://www.zhoulujun.cn/html/tools/VCS/git/8231.html
延伸阅读:
- git中merge还是rebase?git之圣战merge vs rebase
- 删除github中的项目
- git rebase取消后重新push失败,intellij提示detached head
- git版本冲突:not concluded your merge (MERGE_HEAD exists). hint: P
- GitHub不再支持密码验证解决方案:SSH免密与Token登录配置
- github的Contributions找不到自己:设置git commit邮箱与用户名
- windows上git不区分文件大小写——mac/liunx打包报错
- Git内部原理:微型文件系统与内容寻址系统(转载)
- github与gitlab使用的一些经验
- Git hooks与自动化部署
- Github进行fork后如何与原仓库同步:fork分支如何追新与提交
- git文件无修改diff无变更提交列表很多—被修改(LF/CRLF换行
- git Monorepo代码管理模式
- git操作PR与MR有啥区别吗?
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
- git宝典—应付日常工作使用足够的指北手册