Git 解决分支冲突

在使用 git 进行版本管理的开发过程中,经常遇到上传或者拉取分支的时候冲突,在遇到冲突的时候,经常使用下面两个方式解决,虽然第一个方案看起来比较复杂,但是如果按我之前的文章: {% post_link '工具环境/git/git-workflow' %} 进行工作的话,只需要执行3、4、5三步即可。

虽然提供的解决方案,但是最好还是从根源上降低冲突出现的频率才是最好的方案。

新建分支方法

本文主要讨论 Git feature 与 master(develop) 分支冲突解决方案。

  1. git pull : 同步远程分支,发现当前的开发流有了新的提交,且与自己开发的功能有冲突。
  2. git checkout -b feature : Checkout 到 feature 分支。
  3. git checkout master git pull origin master : 切换到 master 分支并拉取最新的内容。
  4. git checkout feature git rebase master: 切换到 feature 分支并将 master 的修改合并,并解决冲突。
  5. git add -A git rebase --continue : 将修改内容保存并继续 rebase 操作。
  6. applying: xxxx : 看到这个提示表示已经完成了合并。
  7. git checkout master git merge feature : 切换到 master 分支并将 feature 分支内容合并过来。

暂存提交方案

在修改的时候,忘记新建对应的分支了,可以按上面的方案,但保存,然后创建新的分支,再将远程分支对应分支的内容 reset 回未修改的状态。或者使用 git stash 系列命令解决冲突。

  1. git stash : 暂存修改的内容
  2. git pull : 拉取最新的内容
  3. git stash apply or git stash pop : 将暂存的内容合并进来

git stash 命令

git stash apply : 应用暂存内容但是不删除,可以是最近的一次暂存,也可以按序号应用 git stash apply stash@{0} git stash drop : 移除暂存的内容 git stash pop : 应用的同时从列表中移除,只能操作最近的一次 stash 的内容 git stash list : 查看整个的暂存列表 git stash save : 来查看对应的所有的修改,这样就可以非常方便的找到最好的实现方案 git stash show -p stash@{1} : 不输入对应的 stash@{} 内容则将最近的 stash 与当前分支做比较,如果加了则用指定的暂存

  • Git stash apply 的时候,报错 :
    error Your local changes to the follow files would be overwritten by merge: xxxx
    Please commit your changes or stash them before you merge .
    

可以先add 修改的文件,然后再apply

    :::shell
    git add test.txt
    git stash apply
Author
Tags
总结(3) Emacs(2) org mode(4) 年度清单(2) 读书清单(2) 电影清单(2) 电视清单(2) Python(3) 学习计划(1) 子弹笔记(1) 手帐体系(1) 时间管理(1) 时间使用效率(1) 形意拳(1) 知识管理(1) 简历(1) 技能水平(1) 生活(1) 减法生活(1) 阅读(1) 阅读分组(1) org(1) docx(1) markdown(2) cmder(1) 图床(1) jsdelivr(1) github(1) 安卓系统(1) 手动更新手机系统(1) post link(1) post path(1) hexo(2) hugo(2) GitHub Pages(1) travis(1) 自动部署博客(1) presentation(1) gcc(1) g++(1) 默认表格(1) 复杂表格(1) multimd table(1) google adsense(1) evil(1) surround(1) librime(2) emacs-rime(1) liberime(1) dot(1) graphviz(1) use-sub-superscripts(1) ditaa(1) Evil Multiple cursors(1) turn evil mode off(1) modifier keys(1) keymap(1) super(1) hyper(1) install Emacs(1) Mac OS(1) keybinds(1) clocktable(1) coding system(1) image library(1) keybind(1) spacemacs(1) org babel(1) homebrew(1) dd(1) diskutil(1) tmux(1) xcode(1) xcrun(1) node-gyp(1) tar(1) tree(1) pacman(1) plantuml(1) find(1) grep(2) du(1) apt-get(1) apt(1) regex(1) wildcard(1) zsh(1) gdb(1) lsof(1) netstat(1) rebase(2) workflow(1) 工作流(1) .gitignore(1) postbuffer(1) hung up(1) merge(1) cache(1) reset(1) Git(1) command(1) submodule(1) GitHub Pull Request(1) pr(1) Matplotlib(1) beautifusoup(1) 下载小说(1) SOLID(1) Leetcode(2) 透视表(1) read_excel()(1) pandas(1) conda(1) django(1) markdown-deux(1) mysql(1) oracle(1) 模糊查询(1) logging level(1) reflex(1) Field(1) Maven(1) Selenium(1) 下拉框(1) select into(1) insert into select(1) CAST(1) CONVERT(1) timestamp(1) concat(1) concat_ws(1) group_concat(1) union(1) grant privileges(1) 重置 root 密码(1) 报错 10060(1) 清理连接数(1) create user(1) set password(1) exists(1) in(1) markdown-it(1) emoji(1) tasks(1) valine(1) Code 504(1) Hugo(1) theme(1) substring(1) indexOf(1) RegExp(1) 定位节点(1) 正则匹配(1) async(1) 异步请求(1) css(2) layui(1) 滚动条(1) JavaScript(1)