git学习之旅(三)——合并冲突(conflict)

「情况1」同一文件内容冲突

  • cd ~/user2/sample
  • git pull
  • echo "Hello,User2" >> user.txt
  • git add .
  • git commit -m "user2 conflict commit"
  • git push origin master
  • cd ~/user1/sample
  • echo "Hello,User1" >> user.txt
  • git pull

由于发生了冲突不能合并新的版本,要先提交

  • git add .
  • git commit -m "user1 conflict commit"
  • git pull

因为2个用户都想同一文件同一地发进行修改,即发生了冲突(conflict),使用文本编辑器可以看到有以下标志提示

必须修正冲突的地方再提交,改为如下结果

  • git add .
  • git commit -m "solve confict"
  • git log

  • git push origin master

「扩展」图形用户界面

修改冲突建议使用图形界面工具

  • sudo apt-get install meld
  • git mergetool --tool=meld

「情况2」重命名文件

  • cd ~/user1/sample
  • mv user.txt user11.txt
  • git add .

  • git status

  • git add -A

修改文件名相当于删除旧的文件,新建一个文件,涉及删除文件根据以上提示使用git rm <file>,也可以使用git add -A包括新增(new file),修改(modify),删除(deleted)都全部提交,至于git add . 不包括删除。

  • git status

  • git commit -m "user1 renamed"
  • git push origin master
  • cd ~/user2/sample
  • mv user.txt user22.txt
  • git add -A
  • git commit -m "user2 renamed"
  • git pull

ll

  • ls -l

  • git status

发现同时存在2个文件,要将冲突修正

  • rm user22.txt
  • mv user11.txt user.txt
  • git add -A
  • git commit -m "solve filename conflict"

在代码是共用的或者是接口,修改文件名或重命名变量会涉及其他模块的代码修改,之后很容易发生冲突或者是逻辑错误。所有尽量避免。如果要改最好是让其他人都将修改提交到服务器且工作区不再编译,再使用软件工具进行重构。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 04:27:49

git学习之旅(三)——合并冲突(conflict)的相关文章

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学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件

远程库 远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接! 远程库有两种,一个是自己搭建的git服务器:另一种就是使用GitHub,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库.友情提示:在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改).所以,不要把敏感信息放进去. 远程仓库的好处: 1.我们可以随时随地的与仓库建立连接,以实时存放我们开发的内容: 2.与他

Git学习笔记(三)

学习网址 标签管理 一.创建标签 创建标签,更容易记住名字,创建和删除标签都是瞬间完成. 1.创建和查看标签名: 2.给历史某个commit添加标签: 注意:tag标签不是时间排序列出,是按字母列出. 3.查看标签信息git show <tagname>: 4.创建带说明的标签,用-a指定标签名,-m指定说明文字: 查看: 5.使用-s用私钥签名一个标签: 标签采用PGP签名,必须安装gpg(GnuPG)如果没安装会报错: 安装后,可以使用git show <tagname> 可以

git学习之旅(二)——多人协助

工作区workspase 暂存区stage 版本库master的区别 工作区就是目前文件系统下的文件,所以直接打开文件夹就能看到 暂存区是通过git add后版本库暂时保存的地方,紧接着要使用git commit提交到版本库上的某个分支上 提交到版本库后相当于有了备份,以后能恢复到工作区 用户2提交 cd ~/user2 git clone [email protected]:repo/sample.git cd sample echo "Hello Git!" > user2.

git学习之旅(四)——回退版本

本地合并提交或修改提交说明 cd ~/user mkdir sample2 cd sample2 git init echo "1" > user.txt git add . git commit -m "NO.1 commit" echo "2" >> user.txt git add . git commit -m "NO.2 commit" echo "3" >> use

git学习之旅(六)——github远程服务器

github是一个免费的git服务器,上面可以找到很多开源项目 官网:www.github.com 注册帐号完成后,进入主页 点击左上角的图标也可以进入主页,看到4个帮助文档,点击第一个文档Set up Git 主要是使用ssh密钥来管理编辑权限,在第二篇的最后的扩展部分已经介绍了ssh的使用,按照以上文档可以将公钥粘贴到新建的key,那么本地就有权限提交到github上了. 在主页上2个地方都可以找到新建仓库的按钮,点击后进入以下页面 仓库的名字.会自动加上.git后缀 描述信息 公开或私人.

[原创] zabbix学习之旅三:agent安装

部署完zabbix server后,自然要部署zabbix agent.在官方描述中,agent是部署在被监控的机器上,用于采集CPU.内存.磁盘等统计信息,并上报给server用于进一步处理.agent的采集信息方式也非常高效,是通过本机操作系统的系统调用完成. agent主要通过被动和主动两种方式上报本机信息,顾名思义,被动方式意味着server下达采集命令时,agent才会去收集信息:而主动方式意味着agent会在第一次时就从server处获取要采集的items,并定期将每个item的新值

我的Go语言学习之旅三:Go语言中的for循环

这个但是为难我了,我一直是走在WEB前的程序猿,各种循环用起来得心应手.突然间发现到了Go这里竟然行不通了,查阅后才发现,原来Go的for是这样写的. for i:=0;i<10;i++{ fmt.Printf("%d\n",i); } 非常有才的一种写法,我用起来感觉的确没有 带有圆括号舒服. 接下来.看很多其它关于 for 的实例吧 Go 的 for 循环有三种形式.仅仅有当中的一种使用分号. for init; condition; post { } ← 和 C 的 for

Git学习系列总结及博客全目录

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45849615 Git是一个分布式版本控制软件,它是由Linux的作者Linus用C写的一个分布式版本控制系统. Git主要特点 1.速度:Git在本地上保存着所有当前项目的版本和更新,并且Git中的绝大多数操作都在本地,无需连网,所以处理起来速度. 2.简单的设计:Git的实现与项目复杂度无关,它永远可以在几毫秒的时间内完成分支的创建和切换. 3.完全分布式模式:每个人电脑上都有一个完整