Git笔记

Git笔记

为什么要学Git?

多人运动!版本控制,也叫做版本迭代

Git笔记_第1张图片

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,

  • 如软件代码的一致性
  • 软件内容的冗余
  • 软件过程的事物性
  • 软件开发过程中的并发性
  • 软件源代码的安全性
  • 以及软件的整合等问题

那么如何管理多人协同开发项目?

版本控制

一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

优点

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

主流产品

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

目前影响力最大且使用最广泛的是Git与SVN,GitHub和Gitee社区也非常火热。

版本控制的分类

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。

集中版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

代表产品:SVN、CVS

分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

代表:Git

Git与SVN的区别

SVN是集中式版本控制系统,版本库集中放在中央服务器。

工作时用自己的电脑,先从中央服务器获取最新的版本,然后工作,完成工作后,再把自己做完的活推送到中央服务器。

集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。

工作的时候不需要联网了,只需在连网时push到相应的服务器或其他用户。

协同的方法:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,

这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

Git是目前世界上最先进的分布式版本控制系统

Git历史

Git起源于 Linux,Linux内核维护最初提交到 BitKeeper上,到2005年 BitKeeper的商业公司收回 Linux内核社区免费使用 BitKeeper的权利。

于是Linux之父Linus torvalds(李纳斯·托沃兹 )决定开发自己的版本系统,仅用两周就开发出了 Git!

Git是免费、开源的,最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper!

Git安装

打开 git官网 ,下载git对应操作系统的版本。

下载对应的版本即可安装!安装:无脑下一步即可!

说明

  • Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

Git配置

查看所有配置:git config -l

*注意必须要配置用户名和邮箱,表明身份

git config --global user.name "用户名"

git config --global user.email "邮箱"

所有的配置文件都保存在本地

系统级配置

在安装目录的etc文件夹下的gitconfig

Git笔记_第2张图片

用户级配置

在当前登录的用户目录下也有gitconfig文件

Git笔记_第3张图片

Git核心

本地工作区分为

  • 工作目录 Working Directory 平时存放项目代码的地方
  • 暂存区 Staging Area 保存即将提交到本地仓库的文件列表信息
  • 资源库 Respository 存放数据的位置,包含所有提交的版本

Git笔记_第4张图片

工作流程

  • 在工作目录添加或修改文件
  • 将需要进行版本管理的文件放入暂存区
    • git add .
  • 将暂存区的文件提交到本地仓库
    • git commit
  • 提交到远程仓库
    • git push

文件状态

  • Untracked:未跟踪,不参与版本控制
  • Unmodify:文件入库但未修改
  • Modified:文件已修改,但仍未放到暂存区
  • Staged:暂存状态,commit之后提交到本地仓库

.gitignore文件配置忽略信息

语法规则:

  • 注释

  • 可以使用Linux通配符
    • *任意多个字符
    • ?一个字符
    • [abc]可选字符范围
    • {“str1”,"str2"} 可选字符串
  • !文件名,该文件除外
  • /目录 往上忽略
  • 目录/ 往下忽略
    • target/ 表示target目录下的都不参与版本控制

相关命令

命令 说明
git init 在目录创建一个全新的仓库
git clone [url] 从远程克隆一个仓库
git status 查看文件状态
**git commit -m **[msg] 提交并附带说明

还有远程仓库(Remote)托管代码的服务器,简单认为项目组中一台电脑用于远程数据交换

使用码云

注册->登录->设置个人信息

设置本机SSH公钥,免密连接

首先输入命令 ssh-keygen -t rsa生成公钥文件

Git笔记_第5张图片

然后到当前登录的用户目录下找到.ssh文件夹

Git笔记_第6张图片

打开id_rsa.pub文件,全选,拷贝到码云的ssh设置中

Git笔记_第7张图片

创建仓库

Git笔记_第8张图片

创建好仓库之后就可以邀请团队成员

Git笔记_第9张图片

IDEA集成Git

  1. 按照平时的方法创建项目,第一次使用时需要指定Git的执行文件

Git笔记_第10张图片

  • 将当前项目设为版本控制后就可以看到右上角多了一些图标

Git笔记_第11张图片

Git笔记_第12张图片

  • 也可以在项目的文件夹下打开bash窗口,执行git init初始化仓库
  1. 修改文件,使用IDEA操作git

    点击右上角绿色的打勾按钮,会显示下图的内容。

    一般先commit到本地仓库,再push到远程仓库。

    熟练之后可以两步一起操作,一步到位!

Git笔记_第13张图片

记得提交版本时添加备注信息哦

如果没有push成功还可以重新上传

Git笔记_第14张图片

使用命令无非就三部曲

  • git add.
  • git commit -m "说明信息"
  • git push

分支说明

多人协作时非常重要!

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作。

而是在dev分支下工作,若需要发布新版本再将稳定的dev分支代码合并到master主分支上。

在分支合并时,出现文件冲突,协商之后选择一个稳定的文件。

git branch 查看所有分支

git branch -r 查看所有分支

git btanch dev 创建开发dev分支

git btanch -d dev 删除dev分支

git checkout -b dev 创建并选择dev分支

git merge [branch] 合并指定分支到当前分支

git push origin --delete [分支 名] 删除远程分支

git branch -dr [remote/branch] 删除远程分支

还有很多学习资料在码云下面可以参考

image-20200804164623176

深入学习

总结

最后记录一下这次团队协作开发的感受。

最初不明白分支的概念,项目开始就一直在主分支上工作

Git笔记_第15张图片

刚开始的时候经常发生文件冲突,后来给每个人分模块在各自的包下写代码。冲突明显减少

Git笔记_第16张图片

在两周时间里,有很积极的同学,也有懒散的同学。但总的来说大家都挺努力~

要怪就怪自己管理经验不足,以后分配任务一定不能分多,而且重要的任务需要自己负责。

不能让某个环节堵塞整个项目进度。比如项目的登录功能,负责的同学一周没做出来??

后面很多功能都需要从session提取登录人信息,当时也没想到伪造默认登录人,一直干等着。

如果某个人负责的模块难度超过了他的能力,及时换人调整。否则给再久的时间也是徒劳。

为期两周的团队合作,最大的感触就是人和人之间是有差距的,不能用对自己的要求去对待别人。

宽容理解走得慢的同学,给他们一些简单的工作。鼓励和带动上进的同学,保证项目正常完成。

你可能感兴趣的:(Git笔记)