dev和master合并冲突解决

  • git add总结
·  git add -A  提交所有变化

·  git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

·  git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
  • 克隆远程仓库
git clone git-address
  • 删除所有本地分支,除了DEV
git stash && git checkout dev && git branch | grep -v "dev" | xargs git branch -D
  • 删除缓存,添加ignor
git rm -r --cached .
git add .
git commit -m ‘update .gitignore‘
  • 添加变更并提交
git add -A  # A表示把所有更新添加到临时区
git commit -m "注释"
  • 拉最和推送代码
git pull # 拉取
git push # 推送
  • 删除缓存,过滤文件通用代码.gitignore
git rm -r --cached .
git add .
git commit -m ‘update .gitignore‘
  • 新建本地分支
git checkout -b 123;
  • 本地分支推到远程,并建立关联
git push --set-upstream origin 123
  • 标签tag的操作
git tag #查看版本
git tag [name] #创建版本
git tag -d [name] #删除版本
git tag -r #查看远程版本
git push origin [name] # 创建远程版本(本地版本push到远程)
git push origin :refs/tags/[name] # 删除远程版本
  • 合并rebase分支
git checkout dev
git pull --rebase
git checkout my
git rebase dev
# 解决冲突
git add -A
git rebase –continue
git push -f
# 自动全并COMMIT:git commit --amend --no-edit 如果代码没有冲突,5,6,7可以省略
  • 将多个commit合并成一个
git merge-base origin/dev my
# display your hashcode
git reset --soft `your hashcode`
git add -A
git commit -m "commit"
git push -f
  • 将本地仓库上传到线上
  1. 在远程建立一个仓库,它有https和ssh的地址
  2. 本地建立仓库文件夹 mkdir validate
  3. 在进行文件夹,cd validate
  4. git初始化,git init
  5. 映射远程仓库,git remote add origin [email protected]:bfyxzls/schedle.git
  6. 添加一个readme.md文件
  7. 添加它到本地仓库,git add readme.md
  8. 提交本地,git commit -m "initial"
  9. 将本地仓库提交的内容推到远程仓库的对应分支,git push -u origin master
  10. 大功告成
  • 查看提交的日志
git log --oneline //会列出所有commitId
  • 直接切换到历史版本
 git reset --hard commitId
  • 打标签

我们可以为某个时间点上线的版本打个标签,当这个版本有问题时,可以去还原它。

  1. 列表所有标签 git tag
  2. 筛选标签 git tag -l ‘v1.4.*‘
  3. 新建标签 git tag -a v1.4 -m ‘对标签的描述‘
  4. 显示标签的具体信息 git show v1.4
  5. 上传标签 git push origin v1.5

前景

master主分支,dev是开发分支,master会保持最新的dev代码

问题的产生

  1. dev开发新功能
  2. 版本发布,dev合并到了master,发布生产环境
  3. 新需求来了,在dev进行开发
  4. 同时,线上代码有bug,从master拉新分支,改bug,之后合并到master
  5. master与dev这时代码不一致,以后合并有可能会有冲突
  6. dev开发完成,上线前,先与最新master做一下rebase,解决冲突
  7. git rebase会根据你的git commit进行冲突解决,每次都要进行git rebase --continue,这是比较烦人的
  8. git log找到dev是在哪个commit里合并到master的,找到后git reset --soft 把dev新需求合并成一个commit
  9. 最后再git rebase就可以了

相关git命令

找与master相同代码时的commit id

$ git log
commit 9f4c0939ce30aca3f4e18e69b2deed7b721b3ebb (HEAD -> master)
Author: lind <bfyxzls@sina.com>
Date:   Sat Apr 27 12:45:24 2019 +0800

    master2

commit 09b6898a5b32ac5e23745f7b343424170869045a
Author: lind <bfyxzls@sina.com>
Date:   Sat Apr 27 12:44:48 2019 +0800

    master1

commit c9507744d6528a3df9529d92953c896a4c2d38a7
Author: lind <bfyxzls@sina.com>
Date:   Sat Apr 27 12:43:28 2019 +0800

    dev2

commit 817d0275820c83acdf5513a5fd5855a6eb84443c
Author: lind <bfyxzls@sina.com>
Date:   Sat Apr 27 12:42:59 2019 +0800

合并commit

$ git reset --soft  c9507744d6528a3df9529d92953c896a4c2d38a7
$ git add .
$ git commit -m "合并commit"

在rebase时,冲突提交数为1个,之前是dev有几次新的提交,就要解决几次

$ git rebase master
Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1)

解决冲突,删除或者保留对应的代码,最后再保存,提交即可

Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1)
$ git add .

Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev|REBASE 1/1)
$ git rebase --continue
Applying: 合并commit

Administrator@WIN-1AL08P10TJ8 MINGW64 /c/testgit (dev)

原文地址:https://www.cnblogs.com/Leo_wl/p/10971491.html

时间: 2024-10-08 20:04:07

dev和master合并冲突解决的相关文章

Git分支合并冲突解决(续)

接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时,分支处于 无分支 状态,创建并切换到新分支(git checkout -b conflict),从而解决HEAD游离状态: (2)放弃此次rebase操作(git rebase --abort): (3)在dev分支上merge新分支,出现冲突(git merge conflict): (4)冲突修

Egit的merge合并冲突具体解决方法

稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看的糊里糊涂,花了很多时间去实验整个合并流程.. 前提工作 创建一个普通JAVA工程Test,创建一个类Test,写点东西并加入到本地git库: 创建个develop分支,创建个Develop类,修改Test类的某些语句,添加新代码段,提交: 切换到master分支,创建个Master类,修改Test类的同一部分语句,提交: 以上三条操作不进行详细说明,很简单的. 合并过程 打开git repository

Eclipse的Git插件Egit: merge合并冲突具体解决方法

http://www.cnblogs.com/wavky/p/3504060.html 稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看的糊里糊涂,花了很多时间去实验整个合并流程.. 前提工作 创建一个普通JAVA工程Test,创建一个类Test,写点东西并加入到本地git库: 创建个develop分支,创建个Develop类,修改Test类的某些语句,添加新代码段,提交: 切换到master分支,创建个Master类,修改Test类的同一部分语句,提

git 分之合并和冲突解决

Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在master分支上创建分支newname分支并检出到该分支. 合并分支间的修改 Merge 合并

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

项目是一个人独立开发的,master都是开发完的版本,v1.0,v1.1,v1.2……新开发任务时,从master checkout一个新的分支出来,进行开发,当开发完毕,我checkout到master时,出现了很多冲突文件,很不解,项目都是我一个人开发的,为什么会出现冲突呢,在经过问题排查时发现,我在dev分支上进行开发时,当时master上要修改一个小东西,就在master上进行了修改,然后进行了amend提交,造成了checkout分支时master的commit id和现在的commi

git入门:创建合并分支 解决冲突 分支管理策略

分支创建与合并 理解:相当于创建多一个与现在一模一样的平行时空 在这基础上继续干活 但其实并不会影响到当前时空 ,合并时再决定A时空并入B时空 还是B 时空并入A和空 查看分支 git branch; 创建分支 git branch '分支名' 切换分支 git checkout '分支名' 创建加切换 git checkout -b '分支名' 合并某分支到当前分支 git merge '分支名' 删除分支 git branch -d '分支名 解决冲突 假设现在有主分支(master) 和

?git?-----协同开发,冲突解决 合并分支(项目中使用git)

使用基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4.拉取远程仓库(每一次要提交远程仓库前必须先拉) 5.如果出现冲突,线下沟通(协商重新开发冲突文件),要重新走3.4步 6.没有冲突,提交到远程仓库 """ 协同开发 """ 1)所有人在一个分支上进行开发 - 通常开发分支名为dev 2)遵循git开发流程:先提交本

如何解决GitHub冲突&lt;二&gt;:使用命令行解决合并冲突

如何解决GitHub冲突<二>:使用命令行解决合并冲突 原文地址:https://help.github.com/desktop/guides/contributing/syncing-your-branch/ 你可以使用命令行和文本编辑器来解决"合并冲突". 合并冲突往往会发生在以下情况: (1)多个代码更改发生在同一行代码上 (2)一个提交删除了某一个文件而另一个提交尝试去编辑该文件 1.解决同行代码竞争引起的合并冲突 为了解决一个由更改同行代码引起的合并冲突,你必须决

Git 分支管理和冲突解决

创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在master分支上创建分支newname分支并检出到该分支. 合并分支间的修改 Merge 合并操作将两条或多条分支合并到一