• 基础介绍与常用功能


    Git是一个开源的分布式版本控制系统

    优点:

    1、本地仓库即为一个完整的项目,方便我们进行独立开发

    2、绝大多数操作只需要本地即可完成,即使暂时没有网络, 也可以进行开发工作,只需要之后进行合并即可

    3、便于对代码的历史版本的掌控,随时可以回退到任意版本,且历史提交与修改记录完整保存

    4、便于迭代的管理,可以创建不同分支可以代表不同的功能用途(例如:master,dev,qa,release_1.x等等)

    常用功能:

    1、从远程仓库克隆完整的项目到本地进行开发

    2、在本地创建分支,提交代码到本地/远程仓库

    3、从远程仓库拉取最新的分支

    4、在本地合并分支

    5、在本地解决代码冲突

    等等…………

     基本操作(以IDEA中的操作为例)

    克隆项目(clone)

    拉取分支与切换分支(checkout)

    克隆远程仓库后,右下角会显示当前分支信息,点开当前分支,会展示本地仓库分支(Local)和远程仓库分支(Remote)。

    若当前获取到的远程分支不统一的话,可以点上面的刷新,或者菜单栏中VCS—>Git—>Fetch,拉取远程仓库的最新内容。

    选中对应的分支,选中Checkout即可切换选中的分支到当前工作目录下,如果是本地分支则会直接检出,如果是远程分支,并且没有本地分支与之对应,那么会让你新建一个本地分支与之对应。

    一般情况下,本地代码应该先提交后再进行切换,否则切换分支的时候可能会遇到以下情况,Smart Checkout会将本地变更带到切换的分支上,Force Checkout不会,如果切换过程中有冲突,可能会需要解决,解决冲突操作同第5点。

    提交代码(commit与push)

    选择菜单栏VCS—>Commit/Git—>Push,或者idea右上角的Commit即可,会出现以下窗口,填写Commit Message后点击Commit,或者直接Commit and Push。

    如果在push前没有进行过pull操作的话,push过程中同样可能会遇到需要merge或者解决冲突的情况,操作详见第4/5点。

     

    代码与分支合并(pull,merge与rebase)

    远程与本地合并

    git pull是拉取远程分支上的变更,并且与本地分支合并的操作,在没有冲突的情况下,一般直接pull就行了。

    在idea中,默认操作是Update Project,其中可以选择合并方式是merge或者rebase,视情况选择,但一般使用merge即可。

    merge与rebase的区别可以参考网上资料。

    不同的分支之间的合并

    和切换分支类似,点击右下角当前分支名称,选择需要合并到当前分支的分支,点击Merge into Current或者Rebase Current onto Selected,将选中的分支合并到当前的分支。

     

    冲突解决

    主要会在以下几种情况时,出现冲突需要解决,但所有情况下,在Idea里面的合并操作步骤都是相同的。

    在pull的过程中遇到代码冲突

    push过程中的冲突 

    合并分支时产生的冲突

    切换分支时产生的冲突

    以上所有情况,在有冲突的时候,都会出现如下提示,一般情况下不会选择Accept Yours(全部接受你当前的改动)/Accept Theirs(全部接受该分支当前的改动)。

    选择Merge,会出现以下合并的弹窗,左边是你的版本,右边的当前远程分支的版本,中间为合并后的结果,如果都是自己的变动那就直接改,不然就需要和对方沟通后,把需要的代码合并到中间这个版本,完成后Apply即可,在本地确认编译运行无误后,再push到远程仓库即可。

     常见问题(以IDEA中的操作为例)

    commit后撤销本地暂存

    选中对应commit(未提交到远程仓库的),undo Commit。

    想要回滚到某一个版本

    1、revert(回退一次commit,会产生提交记录,但是需要一条一条commit来回退,对于只回退某一/几次提交的情况下比较好用)

    2、reset(直接回退到某一次commit的情况,之后的提交记录会消失)

    cherry pick

    可以将某一次或多次提交,引入当前分支。

    .gitignore文件

    git提交时会默认忽略此文件中配置的一些文件或目录,建议配置,否则可能会将本地idea配置文件提交到远端

    转自:https://www.cnblogs.com/sefuture/p/12980104.html

  • 相关阅读:
    整数幂的求解
    非递归实现不重复序列的全排列(二)
    完整的将日期时间转换为汉字的代码
    如何得到某集合的所有子集合?
    再谈八皇后问题
    大数阶乘的计算(六)
    非递归实现不重复序列的全排列(一)
    非递归实现不重复序列的全排列(三)
    大数阶乘的计算(五)
    关于走楼梯的递归算法
  • 原文地址:https://www.cnblogs.com/javalinux/p/15411998.html
Copyright © 2020-2023  润新知