git从master分支checkout一个新分支,开发完毕合并到master出现冲突

项目是一个人独立开发的,master都是开发完的版本,v1.0,v1.1,v1.2……新开发任务时,从master checkout一个新的分支出来,进行开发,当开发完毕,我checkout到master时,出现了很多冲突文件,很不解,项目都是我一个人开发的,为什么会出现冲突呢,在经过问题排查时发现,我在dev分支上进行开发时,当时master上要修改一个小东西,就在master上进行了修改,然后进行了amend提交,造成了checkout分支时master的commit id和现在的commit id不一样了。所以在合并时,发现两次commit id不一致,就把所有不同的文件标记为冲突,而不是自动合并,需要手动合并。解决办法就是在把master分支的head指针reset到当时checkout时的commit id上,然后再进行合并生成新的提交就不会出现冲突了。

  这个问题的原因就是checkout新分支时,假设master的HEAD指针为1,新分支里面的最新commit id也为1,新分支然后就行1开发往后添加很多commit,当master合并时,只是将head指针移动了而已,但是如果master的head指针commit id在新的分支上不存在时,git就认为在master有别人提交过内容(包括你自己),这时HEAD指针就不能简单的移动到新分支的头部了,必须将master的HEAD指针和新分支的HEAD指针处的内容进行合并才能merge,所以一旦在开了新分支时,在master分支上进行了任何提交,新分支合并时就会出现冲突,切记,切记。

时间: 2024-10-08 23:22:44

git从master分支checkout一个新分支,开发完毕合并到master出现冲突的相关文章

git 推送内容到远程新分支

之前在做项目的时候,自己想将东西传到远程的一个新分支上.自己开始弄的时候稀里糊涂弄上去的也没搞清楚原理,不过自己后来又去试了一下,发现下面这个方法还可以. (1)在本地的一个目录下,git bash (2)然后进行git init,生成.git文件 (3)git add . (4)git commit -m"xxx"(这时候本地就有master分支了) (5)git checkout -b 新分支名 (创建并切换到分支下) (6)修改本地工作目录 (7)然后git add . (8)g

git 创建、切换和提交新分支

查看本地分支 git branch 创建新的分支 git branch <newBranch> 切换分支 git checkout <branchName> 创建并切换分支 git checkout -b <newBranch> 提交本地分支到远程 git push origin <branchName> 原文地址:https://www.cnblogs.com/fanqshun/p/10292379.html

git 从远程主服务器当中创建新分支

现有版本; h20, h28,h26,i8 h28,h26,i8是从H20下面创建的. 需求: 从H28下面创建新分支继续开发. 思路: 所有代码均是放置到H20上仓库当中,首先下载H20完整仓库,也就是.git文件夹当中内容,其本质是一个ZIP文件. 然后从仓库当中取出某一个分支(如H28),这就是同步到某个分支的所有代码(本质是从ZIP当中读取某一部分文件). 注意:此时本地是H28分支,我们所作的修改均是在H28上面,但实际需要是我们是在此基础之上创建一个新分支. 具体实现代码 1. 复制

git提交本地代码到新分支

背景: 从branchA分支拉了一份代码,做了一些修改,但是不想提交到branchA分支,想新建一个分支branchB保存代码. 操作方法: 添加本地需要提交代码 git add . 提交本地代码 git commit -m "add my code to new branchB" push 到git仓库 git push origin branchA:branchB 仓库中原本没有branchB,提交后会生成新分支branchB,并将本地基于branchA修改的代码提交到branch

git——创建分支后,切换分支报错(error: pathspec &#39;master&#39; did not match any file(s) known to git)

error: pathspec 'master' did not match any file(s) known to git 解决办法: 1.查看分支 git branch -a 2.获取所有分支 git fetch 3.切换到远程master分支: git checkout origin/master 4.执行git branch,可以看到我们想切换的那个分支 5.从当前的分支切换并新建分支,可以理解为即将新创建的分支是由当前分支出来的 git checkout -b 新分支名 6.建立本地

IDEA中Git分支未push的变更集如何合并到另一个分支

使用rebase命令 刚开始,A分支和B分支的代码是一样的,把A分支checkout 为当前分支,并且修改了代码,进行[commit]和[push],commit成功了,但是push没有权限. 这个时候在checkout 到B分支,之前的修改已经没有了,它被提交到了A分支上去了,该怎么办? 这时应该在上面的那个情况时(即当前先[Checkout]到A分支),然后选择B分支的[Checkout with Rebase]. 待成功后,就会把A分支已经提交(commit)过的变更集,在B分支上也提交(

《Git小书》笔记:6 分支

还记得在食堂排队吗,假设好多同学喜欢看到认识的同学就喜欢插队,只是他的插队不是直接插入,而站在队外面,然后来了新人看到了,又插到他后面,很快我们就看到食堂窗口那里变成了一颗树了. 好的,我们先来一个人排队: 查看分支: 我们开始插队,创建一个新分支roma: 在新分支上修改文件,然后提交一下,就相当于又插队了一个人: 好的,现在roma分支上我们已经完成了插队,而master分支还只有一个人"init",现在查看一下roma分支上有几个人了: 下面是简化SAH1输出的命令格式,一般情况

Mac中Git的简单实用(6) --- 分支管理策略

今天我来介绍下Git,Git是一款免费.开源的分布式版本控制系统. 我们在上一个学习了Git分支冲突管理. 这一章,我们要学习Git的Fast-forward模式.保存恢复现场 .测试的feature分支. Mac中Git的简单实用(1) - Git基本命令(1) Mac中Git的简单实用(2) - Git基本命令(2) Mac中Git的简单实用(3) - Github远程仓库 Mac中Git的简单实用(4) - 分支branch管理 Mac中Git的简单实用(5) - Git分支冲突管理 1.

git 使用详解(8)-- 分支的新建与合并

分支的新建与合并 现在让我们来看一个简单的分支与合并的例子,实际工作中大体也会用到这样的工作流程: 1. 开发某个网站. 2. 为实现某个新的需求,创建一个分支. 3. 在这个分支上开展工作. 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理: 1. 返回到原先已经发布到生产服务器上的分支. 2. 为这次紧急修补建立一个新分支,并在其中修复问题. 3. 通过测试后,回到生产服务器所在的分支,将修补分支合并进来,然后再推送到生产服务器上. 4. 切换到之前实现