zoukankan      html  css  js  c++  java
  • 关于git的学习

    没工作之前一直都有一个疑问:公司里面那么多人都在做开发,最后代码是怎么合一起的?还有代码交付由谁管理?现在接触到代码管理工具就解决疑问了。目前接触到的代码管理工具有svn,git。

    git和svn的区别

    1.git是分布式的,svn是集中式的。

    svn必须有一个服务器版本库就放在一个中央服务器,所有开发人员都是与服务器进行交互的。

    git更倾向于分布式开发,每台计算机上都有一个完整的本地版本库,和服务器一模一样。

    2.git把内容按元数据方式存储,svn按文件

    3.分支不同。

    svn创建分支,是创建了一个新的文件及及文件的。创建完分支后,影响全部成员。

    git开启分支,并没有创建文件夹,只是多了一个索引文件,记录这个分支的变化。用户想在这个分支里做什么都可以,对其他分支没有任何影响。比较适合多分支并行开发。

    参考https://www.cnblogs.com/baby123/p/10411103.html


     首先安装git之后,就可以从服务器上拉取代码。作为初学者,这也是踩过坑的。拉取代码之后,这个分支属于branch,然后需要更改分支更新代码才能使用。最开始我不懂这个分支到底什么意思,然后在网上看了几个人写的博客,现再整理一下git分支。

    git分支

    分支的创建本质上只是创建了一个指向提交对象的指针。开发任务都是并行开发的,所以每个分支都是重新创建一个新环境来写的,分支之间是互不干扰的,直到把这些合并到master主干上。

    如图,假设写了第一个版本的代码V1,然后又写了第二个版本的V2,那么v2保留的内容是相对于v1新加的内容,他们之间的关系是V2指向V1,这一条线叫主干master。

    在v2的基础上新增功能G1,那么可以在V2上创建G1分支,再创建G2分支来新增功能,这时G1和G2没有交涉,最后确定G1和G2完成之后,再合并到主干master即可。

    参考https://www.cnblogs.com/missdx/p/12343771.html


    git基本使用

    以该图为例,Git pull从服务器拉取最新代码,Git Fetch从服务器拉取最新分支,git push是将本地代码提交到远端。

    1.将本地代码提交到本地仓库。

    选择git commit->master ,提交备注message(不填写不准提交),勾选需要提交的文件,点击commit,即可将本地代码提交到本地版本库。

    2.查看日志

    右键TortoiseGit->show log。在日志中,可以查看提交记录。比如,提交人,提交时间,提交了什么文件等等。

    3.分支合并

    如果希望将newbranch分支能合并到master,右键选择TurtoiseGit->Merge,选择被合并的分支。

    4.拉取远端最新的修改内容

    右键->git pull,点击确认即可(不要选择master主干,要选分支)

    参考https://www.cnblogs.com/xuwenjin/p/8573603.html

    5.commit和push的区别

    commit操作的是本地库,push操作的是远程库。


     git解决代码冲突

     1.git冲突的情景

    情景一:多个分支代码合并到一个分支时;

    情景二:多个分支向同一个远端分支推送代码时。

    git的合并中产生具体冲突的情况:

    (1)两个分支中修改了同一个文件

    (2)两个分支中修改了同一个文件的名称

    2.冲突解决方法

    情景一:修改冲突代码->add->commit

    情景二:修改冲突代码->add->commit->push

    git add 命令可将该文件添加到暂存区。

    3.例子

    (1)情景

    本地库中两个分支,修改同一文件同一代码块,两分支先后将修改提交到master,master在合并第二个时,会显示代码冲突。

    (2)本地库

    在master分支建立一个mergeTest.txt,并在文件中添加“Hello master branch”内容

    新建aBranch分支,修改文件内容“Hello master -aBranch branch”

    新建bBranch分支,修改文件内容“Hello master -bBranch branch”

    (3)合并分支产生冲突

    切换到master分支,合并aBranch分支,会成功合并

    合并bmaster分支,产生冲突

    注:
    git merge:默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
    使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,建议采用这种方法。

    (4)解决冲突

    在当前分支上(master),找到冲突文件,直接修改冲突代码,add,commit

    参考https://www.cnblogs.com/gavincoder/p/9071959.html


     再总结几个命令:

    git stsh:备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区和上次提交的内容一致。同时将当前的工作区内容保存到git栈中。

    卑微打工人要提交作业了~

  • 相关阅读:
    MongoDB 启动和关闭
    java protostuff 序列化反序列化工具
    第一天
    第六章
    第六章
    第六章
    第六章
    第五章---面向对象---1.软件开发/2.异常处理/3.try...except的详细用法
    第五章-面向对象-1.元类介绍/2.自定义元类控制类的行为/3.控制类的实例化行为/4.控制类的实例化行为的应用
    第五章---面向对象---1.绑定方法与非绑定方法介绍/2.绑定方法与非绑定方法应用/3.反射/4.内置方法
  • 原文地址:https://www.cnblogs.com/-2016/p/13927022.html
Copyright © 2011-2022 走看看