zoukankan      html  css  js  c++  java
  • git

    一、什么是git?

    Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

    Git是分布式版本控制软件

    git维基百科上详细介绍了git的资料,包括git的创建、使用以及一些参考资料,已经挺全了,记住一点,最高效的学习方式就是读文档,找官方文档去阅读学习是最快的掌握git的方法。

    既然是分布式版本管理,那么和我们平常使用的svn有什么区别?

    1. 分布式 vs 集中管理 (多份版本库 vs 一份版本库,设想下版本服务器挂了?)

    2. 无需网络,随时随地进行版本控制,在没有网络的情况下你想回退到某个版本svn基本没戏;

    3. 分支的新建、合并非常方便、快速,没有任何成本,基本不耗时,svn的版本基本上等同于又复制了一份代码;

    stackoverflow 上关于svn和git的区别的讨论,说的很详细,请参考 Why is Git better than Subversion? github 上通过版本库结构、历史、子项目(submudle)的不同来对比两者,请参考 What are the differences between SVN and Git?

    集中式版本管理:

     分布式版本管理:

    为什么要用分布式版本管理?

    1. 防止线上代码出问题,进行回滚

    二、git 安装

    Linux:略

    Mac:略

    Windows:略

    检测有没有安装成功?

    windows上右键看到Git GUI Here和Git Bash Here。然后点Git Bash Here进入输入git --version就可以看到了。

    Mac上:

    三、Git实战使用

    准备Git环境

    准备Git项目

    项目:学员管理系统。

    第一阶段:一个人单枪匹马开始干

      Git管理步骤:

      版本控制------>git管理文件夹

      1.   进入要管理的文件夹
      2.   初始化(标记,提名)
      3.   管理
      4.   生成版本

      初始化(标记,提名)命令:

      git 初始化 git init

      .git隐藏文件就是存储的所有的Git在管理这个文件夹中所有的配置以及版本信息。

      管理指定的文件:没被git管理是红色被git管理是绿色

      git status    检测当前文件夹(目录)下面的文件状态

      •   红色:未被管理的文件
      •   绿色:git已经管理起来了
      •   生成版本

      git add 要管理的文件文件名   

      git add .    表示将当前文件夹(目录)下的所有文件都进行管理

      生成版本:

      git commit -m '描述信息'

      比如面如信息为第一个版本或者v1。

      注意:

    如果项目文件进行了修改,我们git需要检测什么文件进行了修改,然后对修改的文件进行管理在进行提交生成版本即可!

      查看版本记录:git log

    git的三大区域:工作区、暂存区、版本库。

    ↓init

    工作区:正在操作的文件夹,包含已经管理的文件和新的或者修改了的文件。自定检测。

    ↓add

    暂存区:

    ↓commit

    仓库:

    第二阶段:在原来项目基础上拓展新功能。

    第三阶段:‘突发事件’

    回滚:回滚到之前版本

    git reset --hard 版本号

    从第五次提交回滚到之前可以回滚到四三二一。那么如果再第三次怎么回滚到第五次呢?

    git reflog   
    git reset --hard 版本号

    第四阶段:紧急修复旧版本中的bug

    分支基础知识:

    • 主干线(分支):master
    • 分叉分支:
    • 合并分支:

    查看目前所处的分支:

    git branch

    创建分支:

    git branch 分支名

    从主分支切换到分支:

    git checkout 分支名

    对分支进行管理和提交。

      需要紧急修复旧版本bug,回到master主分支,创建修复bug的分支,一系列的代码操作最后管理和提交。

        合并分支需要回到master分支。

    git checkout master
    git branch
    git merge 要合并的分支名

    把修复bug的分支删掉:

    git branch -d 分支名

    如何解决分之合并产生的冲突?

      1、找到冲突的文件手动修改

      2、

    git工作流: 

    Git的协作功能

    第五阶段:在家里写的代码到公司用。配合代码托管仓库(giuhup,gitlap,gitee...)

    在家里第一次上传代码步骤:

     给远程仓库起别名:

    git remote add origin https://github.com/zhangrenguo94/-.git
    git remote add 别名 远程仓库地址(url)

    向远程仓库推送代码:

    git push -u origin master
    git push -u origin 分支名称

    在公司第一次拉代码:

    git clone 远程代码仓库地址

    注意:

    • 把所有的代码都已经拿下来了,切换分支可以直接切换。
    • 克隆内部已实现起别名,以后提交直接用origin就可以了

    在公司里写代码继续开发新功能,应该在dev分支上写。

    第一步:第一步切换到dev分支进行开发

    第二步:将master代码合并到dev分支(只需要一次)

    第三步:修改代码

    第四步:将本地代码推送到托管仓库

    git push origin dev

    回到家里想继续开发,需要更新:

    第一步:切换到dev分支进行开发

    第二步:拉代码:

    git pull origin dev

    第三步:修改代码

    第四步:提交代码

    注意:

      开发完毕要上线,就需要将dev分支合并到master,master分支就可以上线。

    切换到master
    git chekcout master
    dev分支合并到master
    git merge dev
    推送到远程仓库的master分支
    git push origin master
    回到dev分支
    git checkout dev
    将master分支代码合并到dev
    git merge master
    将dev分支提交到远程dev分支
    git push origin dev

    第六阶段:在公司写的代码忘记上传,然后回家写了新的功能代码上传。 

    打开有冲突的文件,自己手动解决。

    从线上拉代码,拉dev分支

    git pull origin dev
    等同于两句:
    git fetch origin dev
    git merge origin/dev
    rebase(变基)使git记录变得简洁。
    
    第一种情况:把多个提交记录整合成一个记录。(如果已经提交到远程代码库了不建议这么合并)
    git rebase -i 版本号  意味着现在所在的地和这个版本号之间的记录做个合并。
    
    git rebase -i HEAD~数字  比如数字是3,意味着从当前位置开始往前找3条记录然后进行合并。
    注意:用git rebase -i HEAD~数字,需要进行操作,变成s。
    
    第二种情况:有分支,dev分支和master分支合并,如果不想要分叉
    先切回到dev分支
    git checkout dev
    然后rebase命令,把dev变成一个基本的干线,把master放进来
    git rebase master
    在接下来切换到master分支,再把dev分支merge回来
    git checkout master
    git merge dev
    
    第三种情况:忘记将本地代码上传到云端。不产生分叉的方法。
    git fetch origin dev
    git rebase origin/dev
    
    
    注意事项:
    git rebase如果产生冲突解决冲突(按照提示)
    执行git rebase --continue
    rebase变基
    beyond compare
    
    git和 beyond compare建立联系。
    git合并时直接直接调用某个命令启动beyond compare。
    
    第一步安装beyond compare
    
    第二步在git中进行配置
    合并工具:bc4是我们给beyond compare起的名字。
    git config --local merge.tool bc4
    工具的安装路径:
    git config --local mergetool.path ‘/usr/local/bin/bcomp’
    不用保留备份
    git config --local mergetool.keepBackup false
    
    第三步应用beyond compare
    git mergetool
    beyond compare软件

    多人协同开发 !!!

    Gitflow工作流:

    公司项目用组织 :

    公司版本管理用tag:

    第一步:创建项目并且打上标签

    创建dev分支并且上传到云端

    第二步:在组织邀请成员进组织,

    第三步:

    git有三个配置文件:

      当前项目目录下文件--->本地项目配置文件:项目/.git/config

    git config --local user.name 'zrg'
    
    git config --local user.email 'zrg@163.com'

      当前用户所在的目录---->全局配置文件:~/.gitconfig

    git config --global user.name 'zrg'
    
    git config --global user.email 'zrg@163.com'

      系统配置文件:/etc/.gitconfig

      注意:需要有root权限。

    git config --system user.name 'zrg'
    
    git config --system user.email 'zrg@163.com'

      配置文件应用场景:略

    git免密登录:

    1. URL中体现
    2. SSH实现
      1、在自己电脑生成公钥和私钥(默认放在 ~/.ssh/
         id_rsa.pub
      id_rsa)
      2、拷贝公钥的内容,并设置到github中
      3、在git本地配置ssh地址
      4、以后使用就再也不用输密码了。
      git push origin master
    3. git自动管理凭证

    gitignore忽略文件

    应用场景:

    1. 只管代码,不管数据库

    github任务管理相关 

    • issues
      文档以及任务管理
    • wiki
      项目文档

    作者:张仁国

  • 相关阅读:
    java并发编程(五)lock
    java并发编程(一)线程状态 & 线程中断 & 线程间的协作
    java基础之 clone
    java基础 小知识点汇总篇
    java并发编程(四) 线程池 & 任务执行、终止源码分析
    GC(一)内存管理与垃圾回收
    java并发编程(三)cpu cache & 缓存一致性
    java并发编程(八) CAS & Unsafe & atomic
    @PathVariable注解
    redis分布式锁
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/10775865.html
Copyright © 2011-2022 走看看