1  版本控制

1.1  版本控制工具应该具备的功能

  • 协同修改(多人并行不悖的修改服务器端的同一个文件)
  • 数据备份(不仅保存目录和文件的当前状态,还能保存每一个提交过的历史状态)
  • 版本管理(在保存每一个版本的文件信息的时候要做到不保存重复的数据,以节约存储空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。)
  • 权限控制(对团队中参与开发的人员进行权限控制;对团队外开发者贡献的代码进行审核--Git独有。)
  • 历史记录(查看修改人、修改时间、修改内容、日志信息;将本地文件恢复到某一个历史状态。)
  • 分支管理(允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。)

1.2  版本控制简介

  1.2.1  版本控制

        工程设计领域中使用版本控制管理工程制作蓝图的设计过程。在 IT 开发过程中也可以适用版本控制思想管理代码的版本迭代。

  1.2.2  版本控制工具

        集中式版本控制工具:CVS、SVN、VSS.....(缺点:服务器损坏的话,历史数据会丢失)

        分布式版本控制工具:Git、Mercurial、Bazaar、Darcs.....(在本地就可以进行版本控制,本地就会有完整的历史记录,避免单点故障)

2  Git简介

2.1 Git的优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与Linux命令全面兼容 

2.2 Git的结构

    工作区(写代码)—git add—>暂存区(临时存储)—git commit—> 本地库(历史版本)

2.3 Git和托管中心

    代码托管中心的任务:维护远程库

    局域网环境下:GitLab 服务器

    外网环境下:GitHub 、码云

2.4 本地库和远程库

   团队内协作:

        

    跨团队协作:

        

3  Git命令行操作

3.1 本地库操作

   3.1.1  本地库初始化

    (打开 git 命令行窗口:在目录文件夹下右键选择 Git Bash Here)

  • 命令:git init 
  • 效果:会在当前目录生成.git目录(隐藏的)

         

  • 注意:.git 目录里存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。

   3.1.2  设置用户名和邮箱

        

        

   3.1.3  基本操作

  • 状态查看操作git status (查看工作区、暂存区状态)
  • 添加操作git add [file name] (将工作区的“新建/修改”添加到暂存区)
  • 提交操作git commit -m "commit message" [file name](将暂存的内容提交到本地库)
  • 查看历史纪录git log (多屏显示控制方式:空格向下翻页、b向上翻页、q退出)
  •                          git log --pretty=oneline (一行显示)或 git log --oneline
  •                          git reflog (HEAD@{移动到当前版本需要多少步})(HEAD相当于一个指针,指向当前所在的索引)
  • 前进后退git reset --hard [局部索引值](基于索引值操作)
  • reset  命令的三个参数对比
  •            --soft 参数(仅在本地库移动HEAD指针);
  •            --mixed 参数(在本地库移动HEAD指针、重置暂存区);
  •            --hard 参数(在本地库移动HEAD指针、重置暂存区、重置工作区)
  • 删除文件并找回
  •         【前提】删除前,文件存在是的状态提交到了本地库。
  •         【操作】git reset --hard [指针位置]
  •                        删除操作已经提交到本地库:指针位置指向历史记录
  •                        删除操作尚未提交到本地库:指针位置使用HEAD
  • 比较文件差异
  •             git diff [文件名] (将工作区中的文件和暂存区进行比较)
  •             git diff [本地库中历史版本][文件名] (将工作区中的文件和本地库历史记录比较)
  •             不带文件名比较多个文件

    3.1.4  分支管理

        3.1.4.1  什么是分支?

            在版本控制过程中,使用多线条同时推进多个任务。

            

        3.1.4.2  分支的好处?

            同时并行推进多个功能开发,提高开发效率;

            各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

        3.1.4.3  分支操作

  •       创建分支git branch [分支名]
  •       查看分支git branch -v
  •       切换分支git checkout [分支名]
  •       合并分支
  •          【第一步】git checkout [被合并分支名] 切换到接受修改的分支(被合并,增加新内容)上
  •          【第二步】git merge [要合并的分支名]  (执行merge命令)
  •       解决冲突
  •           冲突的表现:
  •                   
  •           冲突的解决:
  •               【第一步】编辑文件,删除特殊符号
  •               【第二步】把文件修改到满意的程度,保存退出
  •               【第三步】git add [文件名]
  •               【第三步】git commit -m "日志信息"

3.2 远程库操作

  3.2.1  GitHub

      1. 账号信息:GitHub首页就是注册页面

      2.创建远程库:New repository

          

     3. 创建远程库地址别名

             git remote -v  查看当前所有远程地址别名

             git remote add [别名 origin] [远程地址]

    4.推送

            git push [别名] [分支名]   (eg: git push origin master)

    5.克隆

            git clone [远程地址]

            克隆效果:

                    完整的把远程库下载到本地

                    创建origin远程地址别名 (git remote -v 查看远程库别名)

                    初始化本地库(即:git init)

    6.团队成员邀请(邀请用户才能提交)

            settings ——> manage access  ——> Invite a collaborator ——> 输入Github账号

            邀请者 把 邀请链接 发送给 被邀请者, 被邀请者登录自己的GitHub账号,访问邀请链接。

            然后点击接受 再执行推送(git push origin master)

    7.拉取

           pull = fetch + merge

          git fetch [远程库地址别名(origin)] [远程分支名(master)]   // 抓取下来

          git checkout origin/master  //切换到链接地址的master (可查看抓取下来的内容

          git merge [远程库地址别名(origin)] [远程分支名(master)]   //合并

          git pull [远程库地址别名(origin)] [远程分支名(master)]   // 等于上面的步骤

    8.解决冲突

       如果不是基于GitHub远程库的最新版所做的修改,在推送(push)之前必须先进行拉取(pull)操作

       拉取下来后如果进入冲突状态,则按照 “分支冲突解决” 操作解决即可

    9.跨团队协作

         1)先复制当前库地址,发送给第三方,然后由第三方登录访问这个地址,然后fork

                   

         2)第三方进行本地修改,然后推送到远程(git push origin master)

         3)第三方在远程库中选择 Pull Request ——> New pull request  ——> Create pull request 

                   

         4)可进行对话

         5)审核代码

                

        6)合并代码(回到对话 conversation 进行操作)

                  Merge pull request (合并)——> Confirm merge(填写本次操作的日志信息)

         操作完成后 远程库 就有了合并的内容, 然后将远程库修改拉取到本地

本文基于 尚硅谷 Git&GitHub 视频记录笔记,如有错误还请提出,将进行更改。

原视频链接:

【尚硅谷】Git与GitHub基础全套完整版教程(快速上手,一套搞定)_哔哩哔哩_bilibili

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐