这篇文章需要对git具有一定的了解,并且知道如何安装git工具(其实就是上git官网下载个文件,安装)

git这种版本控制工具有什么好处

  第一个,方便可以多人协同开发同一个项目或系统

  第二个,当你系统开发到一个稳定版本后为了开发新的功能,肯定要把开发好后的系统代码进行备份保存起来,不然万一那个不懂事的小程序猿删的代码你咋整呢

而代码仓库可以为你解决这个问题,而使用git仓库的项目,就需要用到git工具

版本控制工具git或svn使用方式来说,一种命令行,一个是使用可视化工具进行操作。

git的可视化工具有很多,大部分原理都想通。(间接调用命令行进行操作。)

简单的clone repository 克隆仓库,open local repository打开本地仓库,什么的就不说的

这里以SourceTree界面来举例

一般我们从远程仓库上克隆代码到本地仓库后,我们的操作一般就是,

  1、pull  拉取远程仓库上的代码

  2、修改本地代码,

  3、然后commit,commit时候选择你要提交的你修改过的文件填写提交的作者,日期,说明信息。这样你本地仓库代码已经提交完成了,

  4、将本地仓库和远程仓库进行同步,使用push命令推送到远程仓库

上面的四个步骤是理想化状态下的一般步骤,当单人使用的时候不会出错,两个人可能也不会有问题,但随着人数增多,肯定会遇倒这样那样的问题。

问题情况1:如从远端拉取到正式版本后,我增加的文件,或修改的代码,然后在将修改或增加的代码同步到远端,但在我push之前,有另一个人也从远端拉取得代码

    并且更新完成代码,并push到远程仓库的。这个时候我commit没有问题,但是我push不成功,还有一个就是我也正在修改代码,然后不能将代码pull下来

问题原因:很明显,远程仓库已经被修改的,所以不能推送我们的更改

截图看的更清晰:

我在不同文件夹下拉取的相同的远程仓库一个是在D:/Source_code/MergeRepo   另一个在D:/Source_code/New/MergeRepo

我先将其中一个仓库增加一个文件 “测试push文件时冲突问题.txt”

常规操作,commit   push,完成

我们可以看到文件已经上传到远程分支上的

再接着看另一个本地仓库,可以看到下图,pull按钮有一个提示,远程仓库已经更新的,但这个时候我们可能还在开发新的功能,

可能这个工具没有显示远程有更新可以拉取,我们想要将写好的功能提交到远程仓库

执行,commit  ,push,然后就,,出现错误,远程仓库已经更新的,不能推送。

这需要先将远程代码pull下来,但是可能也拉取不成功

因为新功能会存在修改我们拉取下来的项目的文件,所以我们当前就不能将远程更新的代码拉取下来,会提示我们先stash save我们修改过的代码,

然后再pull更新远程代码,最后再将我们存放到栈里面的开发新功能代码修改弹出栈,stash pop

  解决办法:所以我们要先把远程仓库的代码拉取下来,但是会存在拉取不下来的问题。

      我们需要将我们的更改存放到栈内存中,也就是使用stash save命令,然后在拉取服务器端更新过的代码,然后在使用stash pop命令将我们之前的修改取出来合并到

      本地代码仓库中去。

      当然上面的stash pop弹出改变的内容时会有conflict问题出现,我们找到发生冲突的文件,讲我们需要的文件内容保留下来就可以啦

      (以后有截图的时候再详细讲)

      最后冲突解决完成的,我们再按照常规流程走,commit,push

情况2:需要在正式发布好的产品上添加新的功能,不可能在主分支上开发新功能,比如我们正式版本是在master分支上,

    

  解决方法:我们就需要在复制一份本地仓库中的master版本,取新的

      名字,在这个新的名字分支上开发新的功能,然后我们将新的版本提交到我们远程仓库分支上上。

      提交完成后,我们将本地仓库切换到master分支,在选中我们开发的新功能分支,右键点击merge合并选中的分支到当前分支中。

      到这里,新功能开发任务就完成啦,合并到master分支,主分支也拥有这个新开发的功能模块的

后面待续。。。

最新文章

  1. python高级之网络编程
  2. live555库中的testH264VideoStreamer实例
  3. test for cvx library in matlab - windows
  4. spring 事务问题
  5. window.open被浏览器拦截的解决方案
  6. java记录在线人数小案例
  7. PXE安装linux系统
  8. C#(pronounced: see sharp) 与 .NET
  9. 【HDOJ】5179 beautiful number
  10. 公布AppStore被拒绝的经历
  11. MVC查询数据接收及校验
  12. 基于zepto的移动端日期和时间选择控件
  13. 第31月第10天 tableview头部空白 Other Linker Flags rtmp
  14. Java GUI 单机版五子棋
  15. linux unzip 中文乱码解决方法
  16. SQLdeveloper换成windows主题后不显示的情况
  17. DATAGUARD的搭建
  18. 将php数据下载csv文件
  19. 20165218 《网络对抗技术》Exp3 免杀原理与实践
  20. WebApi入门

热门文章

  1. (线段树)敌兵布阵--hdu--1166 (入门)
  2. [ACM_数据结构] 线段树模板
  3. 阿里云ECS服务器windows环境下配置redis
  4. 深入理解Aspnet Core之Identity(3)
  5. Day 46 视图、存储过程、触发器、函数、事物、锁
  6. 检查网卡是否支持 SR-IOV
  7. BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画(几何&区间dp)
  8. list页面-按照choice筛选丶传condition过滤筛选项丶筛选与显示同步
  9. Python面向对象(类的成员之字段)
  10. 2018 Multi-University Training Contest 3