Git的使用

1.1 版本控制器

在单人开发过程中,需要进行版本管理,以利于开发进度的控制。

在多人开发过程中,不仅需要版本管理,还需要进行多人协同控制。

1.2 Git概述

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

官网:Git

1.3 Git安装

下载Git:https://git-scm.com/downloads

安装,除了安装位置外,其他一直下一步即可

- 安装后,打开cmd 

- 如下信息会在提交代码时要使用,记录在你的每次提交中。以后才知道哪次提交是谁做的。

git config --global --add user.name "Your Name"  #用户名
git config --global --add user.email "email@example.com"  #邮箱
# 查看信息
git config -l 

测试:cmd中执行 ,查看git版本

git version  

1.4 Git架构

- 版本库:工作区中有一个隐藏目录 `.git`,这个目录不属于工作区,而是git的 `版本库`,是git管理的所有内容  

- 暂存区:版本库中包含一个临时区域,保存下一步要提交的文件。

- 分支:版本库中包含若干分支,提交的文件存储在分支中

1.5 Git仓库

对应的就是一个目录,这个目录中的所有文件被git管理起来。

以后会将一个项目的根目录,作为仓库。

仓库中的每个文件的改动 都由git跟踪。

选择一个目录,执行指令:git init

工作区:

执行git init的目录即为工作区,如上例,D:\repo1目录即为工作区【不包含.git目录】

所有文件,都首先在工作区新建,然后可以存入仓库(版本库),进行版本控制。

暂存区:

暂存区也在 .git 目录内,工作区的文件进入仓库时,要先进入暂存区。

分支:

版本控制,简单说,就是记录文件的诸多版本,分支就是这些版本的最终记录位置。

二 、Git命令

2.1 status

执行git status可以看到工作区中文件的状态:

2.2 add

执行 git add . 将工作区中的文件全部存入暂存区

2.3 commit

执行 git commit -m "这里写提交的描述信息" 作用是将暂存区的文件存入分支,形成一个版本

2.4 log

查询提交日志

git log 

2.5 hard

1.查询提交日志

git log

找到要回滚的版本

2.执行版本回退

git reset --hard bf2659c6bd933978d791f129d6defe103a0dcc17

三、Git企业级操作

3.1 远程仓库工作模式

当多人协同开发时,每人都在自己的本地仓库维护版本。

但很重要的一点是,多人之间需要共享代码、合并代码,此时就需要一个远程仓库。

有很多远程仓库可以选择,比如 github(<https://github.com/>),码云(<https://gitee.com/>);

此两种可以注册自己测试使用,但如果是商业项目,需要更多支持需要付费。

公司内部也可以有自己构建的远程仓库,使用Gitlab搭建

3.2 码云使用

注册git服务器账号:

在 [码云](https://gitee.com/) 注册账号,并登录。

进入公司后,很可能会使用公司自己搭建的git服务器,则账号向领导索要即可

也可以选择github

注册登陆账号:

新建仓库:

3.3 配置码云

a.本地生成ssh密钥(私钥和公钥)

右键--->Git Bash Here--->Git命令端

执行命令:

ssh-keygen -t rsa -C "邮箱"

c盘用户目录下查看生成的密钥对

登陆Gitee---头像---设置 实现SSH公钥配置

拷贝公钥-id-rsa.pub

本地关联远程仓库:

本文档中选用仓库的 https协议的地址,将此地址关联到本地git中

推送文件到远程仓库:

将本地仓库中已经commit的内容push到远程仓库,以共享自己的代码。

克隆远程仓库:

如果仓库已经由别人创建完毕,我们需要其中的内容,则可以通过 git clone 将其复制到本地。

代码共享:

多人协同开发时,写好代码的git push 上传到远程仓库;需要代码的 git pull 拉取代码即可。 

常用远程命令操作:

命令

描述

git remote add 标识名(master) 远程地址

本地关联远程仓库

git push 标识名 master

将本地仓库内容上传到远程仓库

git pull 标识名 master

从远程仓库下载内容到本地仓库

git clone 远程地址

将远程仓库复制到本地,并自动形成一个本地仓库

3.3 分支

分支,是一个个版本最终存储的位置。

分支,就是一条时间线,每次[git commit]()形成一个个版本,一个个版本依次存储在分支的一个个提交点上。

查看分支:

查看当前仓库的分支 git branch

仓库中默认只有 master 分支

执行git commit时,默认是在master分支上保存版本

创建分支:

在商业项目开发过程中,我们不会轻易的在 master 分支上做操作。

我们会新建一个开发用的分支,在此分支上做版本的记录。

当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到 master 分支上。

保证开发过程中,可以及时记录版本,又保证 master 分支上每个提交点都是稳健版本。

切换分支:

默认情况下,当前使用的分支是 master分支

可以切换到 dev分支,则后续的[git commit]() 便会在dev分支上新建版本(提交点)

分支提交日志:

查看分支的提交日志,进而看到分支中提交点的详细情况。

分支合并:

两个分支内容的合并,git merge 分支a 合并分支b 把b合并到a上

合并的方式有两种:快速合并 和  三方合并。

如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是移动指针即可。

在不具备快速合并的条件下,会采用三方合并:

3.4 分支创建细节

新建分支细节:

新建分支时,新分支,默认有哪些内容?分支中包含了哪些次提交?

新分支初始内容:

每个分支都有一个指针,新建一个分支,首先是新建一个指针。

而且新分支的指针会和当前分支指向同一个提交点。

新分支包含的提交点就是从第一个提交点到分支指针指向的提交点。

多分支走向:

在master分支和新分支,分别进行 git add 和 git commit

分支情况如下图:

3.5 分支合并冲突

合并冲突:

两个分支进行合并,但它们含有对同一个文件的修改,则在合并时出现冲突,git无法决断该保留改文件哪个分支的修改

场景模拟如下:

在master分支 合并 dev分支:

此时,打开hig.txt 文件:

冲突解决:

出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。

解决方案:

1. 保留某一方的,删除另一方的

2. 保留双方的

3. 但无论如何,要记得删除  <<<<  ====  >>>> 这些

4. 本质是两人协商为冲突的内容,定制出合理的内容。

3.6 Idea关联Git

关联Git

File > Settings 关联过程是自动的

创建仓库

新建项目后,将项目目录创建为git仓库

注意: 要在建仓库前,设置[忽略文件 ".gitignore"]()

作用:被忽略的文件会被版本记录忽略,版本中不包含它们。

范围:不需要和其他开发共享的文件,具体见下图。

提交-commit

创建好仓库后,做第一次提交。

创建分支

新建开发分支

上传到远程仓库(push)

创建一个远程仓库。

要求是裸库,且建议库名和项目名同名。

复制到本地仓库(clone)

如果有建好的远程仓库,比如公司内已经在用的仓库,或者github,码云上的一些公开仓库,

可以将远程仓库的项目复制到本地使用。

更新本地项目

如果远程仓库有更新,则你的本地项目也需要一起更新。

冲突解决

合并分支时,如果出现冲突,则需要解决冲突

3.7 多人协作开发

多人开发协同,git操作,由管理员负责创建一个远程库,初始的库中什么也没有,为裸库,库的名称建议和项目同名,管理员会在idea中创建一个初始项目,其中包含.gitignore文件,并在项目根目录下 建立本地库。并建立 dev分支。管理员将本地库上传到远程库,将其他开发人员拉入远程库的 [开发成员列表中]() ,使得其他开发人员可以访问该远程库。

流程如下:

master分支设置为 protected分支,只有管理员有权限将代码合并到其中。dev分支设置为 常规分支 所有开发人员,都可以其中合并代码

开发人员

初始化:在idea中clone 远程库,获得项目。会建立本地库

后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就commit 提交到本地的dev分支中,然后上传(push)到远程dev分支中。  

需要更新项目内容时,通过 pull 从远程仓库拉取内容。                    

注意:多人协同时,每次在 push 到远程库前,都先做一次pull,一来是把远程最新内容合并到本地,二来是核实本地内容是否和远程内容有冲突。

后续的开发,会接到一个个的功能任务,往复操作 2>、3>、4> 而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值