项目管理——Git详解

一、主要内容

1.Git简介
2.Git的基本使用
3.远程仓库操作
4.IDEA中操作Git

二、Git简介

1 Git概念

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目(项目不仅仅是java代码,任何一个文件都可以用git进行管理,这里的项目指的是一组文件的集合)。

分布式管理的简单理解:(把数据分散存储在若干个存储设备中)

例如:
张三 、李四 、王五是同一个工作组的人员T0组,每个人有一个自己的电脑PC,他们同时去做一个项目P_1,那么每个人本地PC中都有P_1这个项目,张三负责P_1项目中的用户管理模块,李四负责P_1项目中的客户管理模块,王五负责P_1项目中的订单管理模块。每个人写的代码是不一样的,这时候创建三个项目是不合适的。

那到底应该怎么做呢? 应该用Maven去创建一个聚合项目叫P1,里面至少聚合了三个子项目,分别是客户管理,用户管理和订单管理…每个人开发自己的子项目,即使这样又出现了一个新的问题,在各自开发子项目的时候避免不了要涉及到各项目之间的交互问题。这是我们可以让每个人都把代码上传到一个服务器上,让这个服务器共享数据,客户端只需要上传自己的子项目,下载自己需要的项目即可,避免重复提交。例如张三只需要下载客户管理和订单管理到自己客户端即可,在完成自己的子项目后,提交已经修改完成的用户管理 到服务器即可,不需要将下载的客户管理和订单管理再次提交。其他项目也是如此…

这样就实现了同一份代码可以存储到各个不同的电脑上,从而实现了分布式管理。

2 其他常见的版本控制工具

Subversion(简称 SVN,基于 Unix,只能做局域网的版本控制)、CVS (部分银行还在使用)等

3 版本控制工具的作用

协同修改
多人并行不悖的(例如服务器有一个文件,里面有3行数据,张三和李四都下载了下来,并且都加了一行数据,但是张三和李四都认为现在一共有4行数据但是服务器实际上是5行数据 ,这么做就是相悖论的,是错误的,在修改同一个文件的时候应该排队,这样就不会出现错误)修改服务器端的同一个文件。

数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。

版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。

权限控制
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。

历史记录
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。

分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

4 集中式版本控制工具及分布式版本控制工具示意图

集中式版本控制工具示意图

在这里插入图片描述
分布式版本控制工具工作示意图

在这里插入图片描述

5 Git 官网

https://git-scm.com/

在这里插入图片描述
一路下一步即可,【注意:要将git安装到一个非中文的文件夹中】

6 Git 的优势

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

7 Git 和代码托管中心

代码托管中心的任务:维护远程库
局域网环境下
GitLab 服务器

外网环境下
GitHub
码云(gitee)

三、 Git 的基本使用

1 安装及初始化本地仓库

右键出现以下两个选项表示安装成功
在这里插入图片描述

安装完成后打开 Git Bash 窗口
在这里插入图片描述

输入git --version输出版本信息证明安装成功

填写用户名和邮箱作为一个标识

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

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

在本地创建一个目录作为 git 仓库,并通过 git init 命令进行初始化,初始化成功后会在 当前目录生成一个.git 目录文件,不要删除及修改。
在这里插入图片描述
在这里插入图片描述

2 Git 存储流程

在当前文件夹下,新建一个文件test.txt
在这里插入图片描述
使用git进行管理
在这里插入图片描述

修改test 文件
在这里插入图片描述
提交文件
在这里插入图片描述
再次修改并保存
在这里插入图片描述
再提交

在这里插入图片描述
clear清一下屏
在这里插入图片描述
文件只要修改了 就需要先提交的缓存,add 之后再commit提交
在这里插入图片描述
查看一下状态git status
在这里插入图片描述
只要修改
在这里插入图片描述
就又会提示 文件已改变 然后需要add -->commit
在这里插入图片描述
git本地命令——存储流程

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

工作区、暂存区和本地仓库,逻辑上是本地计算机。当我们新建一个文件时,文件位于 工作区,处于已修改(modified)状态,表明文件已进行了修改,但还没有提交保存;通过 命令 git add 将其添加到暂存区,文件是已暂存(staged)状态,表示把已修改的文件放到 下次提交时要保存的清单中;通过命令 git commit将文件放入本地仓库,文件为已提交 (commited)状态,表示该文件已经被安全地保存在本地数据库中,到这一步可以说是成 功生成了一个新的版本。

远程仓库用来将本地仓库上传到网络,实现备份、共享和合作。

3 Git 常用命令

3.1添加文件

git add 文件名
将文件添加到暂存区
在这里插入图片描述

3.2提交文件

git commit -m "提交注释"
将文件提交到本地仓库
在这里插入图片描述

3.3查看状态

git status
查看目录中是否还有文件未提交

3.4查看文件修改对比差异

git diff
比较文件差异

git diff [文件名]
将工作区中的文件和暂存区进行比较
在这里插入图片描述

在这里插入图片描述

3.5查看日志

git log
查看历史记录,显示从最近到最远的日志
在这里插入图片描述

3.6简化显示

git log --pretty=oneline
在这里插入图片描述

3.7查看简短日志

git reflog
查看历史记录,并以简短信息显示
在这里插入图片描述
HEAD@{移动到当前版本需要多少步}

3.8前进回退

git reset --hard [局部版本号]

前进后退版本
在这里插入图片描述
在这里插入图片描述

3.9删除文件

rm [文件名]
在这里插入图片描述

3.9.1 彻底删除

将文件添加到缓存区中【add】,然后提交【commit】。

3.10恢复文件

对于删除文件也可使用 reset 命令恢复
在这里插入图片描述

如果删除文件后没有提交 可以使用 git checkout -- [文件名]恢复
在这里插入图片描述

3.11分支操作

在版本回退那里,已经知道每次提交,git 都会把他们串成一条时间线,这条时间线就 是一个分支。截止到目前,只有一条时间线,在 git 里,这个分支叫主分支,即 master。切 换分支即可以理解为切换时间线。

在版本控制过程中,使用多条线同时推进多个任务。每条线成为一个分支。 例如:
在这里插入图片描述

3.11.1 创建分支

git branch [分支名]

3.11.2 查看分支

git branch –v

3.11.3 切换分支

git checkout [分支名]
在这里插入图片描述
修改一下文件
在这里插入图片描述
提交到 b1 分支
在这里插入图片描述

3.11.4 合并分支(merge/rebase)

第一步:切换到接受合并的分支

git checkout [接受合并的分支名]

第二步:执行 merge 命令

git merge [待合并的分支名]
在这里插入图片描述

3.11.5 删除分支命令

git branch –d [分支名]
在这里插入图片描述

四、 远程仓库操作(以码云为例)

1 在码云注册账号

地址: https://gitee.com/

2 创建SSH Key

因为数据保存在远程服务器,服务器需要对你的身份进行识别,SSH Key可以让你的电脑和码云之间建立安全的加密连接。

2.1运行命令ssh-keygen -t rsa -C"你的邮箱",会有三次提示输入,直接回车即可。

在这里插入图片描述

2.2在用户目录下生成 .ssh 目录,里面有一个 id_rsa.pub 文件, 保存的就是公钥。

在这里插入图片描述

登录码云,在SSH公钥文本框里粘贴 id_rsa.pub 文件的内容
在这里插入图片描述

2.3验证秘钥是否添加成功

执行命令 ssh -T git@git.oschina.net

Git 使用 SSH 连接第一次验证服务器的 key 时,需要你进行确认,此时输入 yes 回车即 可。

再次执行 ssh -T git@git.oschina.net
在这里插入图片描述

3 创建远程仓库

在码云中新建仓库
在这里插入图片描述

4 克隆远程仓库到本地

在这里插入图片描述

4.1复制远程仓库地址
4.2在 bash 窗口中执行 git clone + 复制的地址,回车

在这里插入图片描述

4.3进入克隆目录,添加新文件
4.4执行git add . 将工作区所有内容上传到暂存区
4.5执行 git commit -m "本次提交的注释"提交到本地仓库
4.6执行git push [别名] [分支名] 其中别名和分支名可省略。将 本地仓库所有内容上传到远程仓库码云 ,码云刷新可看到最 新内容

在这里插入图片描述

4.7git pull拉取远程库内容

5 远程库扩展操作

5.1创建远程库地址别名

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

git remote add [别名] [远程地址]增加远程地址

git remote remove [别名]删除远程地址

5.2解决冲突

要点
如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。
拉取下来后如果进入冲突状态,则修改->add->commit即可。

5.3远程仓库邀请成员

设置->数据管理->私有仓库成员->选中仓库->邀请成员

五、 Git 常用命令集

mkdir: XX(创建一个空目录 XX 指目录名) 

pwd: 显示当前目录的路径 

git init 把当前的目录变成可以管理的 git 仓库,生成隐藏的.git 文件。 

git add XX 把 XX 文件添加到暂存区。 

git commit -m “XX” 提交文件 -m 后面的是注释

git status 查看仓库状态 

git diff XX 查看 XX 文件修改了哪些内容 

git log 查看历史记录 

git reset -hard HEAD^ 或者git reset -hard HEAD~ 回退到上一个版本(如果想回退到 100个版本,使用 git reset -hard HEAD~100)

cat XX 查看 XX 文件内容 

git reflog 查看历史记录的版本号 id 

git checkout --XX 把 XX 文件在工作区的修改全部撤销 

git rm XX 删除 XX 文件 

git remote add origin https://gitee.com/oldlu_wk/gittest.git 关联一个远程库 

git push -u (第一次提交要用-u 以后不需要)origin master 把当前 master 分支推送到远 程库

git clone https://gitee.com/oldlu_wk/gittest.git 从远程库中克隆 

git checkout -b dev 创建 dev 分支 并切换到 dev 分支上 

git branch 查看当前所有分支 

git checkout master 切换回 master 分支 

git merge dev 在当前分支上合并 dev 分支 

git branch -d dev 删除 dev 分支 

git branch name 创建分支 

git stash 把当前的工作隐藏起来等以后恢复现场后继续工作 

git stash list 查看所有被隐藏的文件列表 

git stash apply 恢复被隐藏的文件,但是内容不删除 

git stash drop 删除文件 

git stash pop 恢复文件的同时也删除文件
 
git remote 查看远程库的信息

git remote -v 查看远程库的详细信息 

git push origin master Git 会把 master 分支推送到远程库对应的远程分支上

六、 IDEA 中操作 Git

1 使用 IDEA 提交代码

1.1在 idea 中配置 git 路径

在这里插入图片描述

1.2在远程仓库上创建仓库

创建本地仓库

在这里插入图片描述

1.3将项目添加到缓存

在这里插入图片描述

1.4提交项目

在这里插入图片描述

1.5提交并上传

在这里插入图片描述

1.6添加远程仓库地址

在这里插入图片描述

1.7查看上传状态

在这里插入图片描述
如果上传时出现Push rejected: Push to origin/master was rejected

解决方法:

1.选择你要上传代码的文件夹,鼠标右键git Bash Here

2.输入下面两行命令

git pull origin master --allow-unrelated-histories

  • 把远程仓库中的内容 pull 到本地工 作目录

git push -u origin master -f

  • 在 pull 下来的项目中做修改,通过以上命令 push 到远程 仓库了

2 在 idea 中用 git 获取新项目代码

2.1第一步

在这里插入图片描述

2.2第二步 :克隆远程仓库

在这里插入图片描述

3 解决冲突

3.1产生冲突的原因

冲突产生的根本原因是:两个人修改了同一个文件的同一个区域,在前者已经提交代码到远程仓库的情况下,后者修改代码前没有使用pull命令更新代码,而是修改完代码后再使用pull命令,这时就会产生冲突。这也是最常见的冲突,下面介绍解决冲突的办法也是主要针对这种冲突。
在这里插入图片描述

3.2预防冲突

在修改代码前,使用pull命令更新代码,能够保证在开始修改代码前本地的代码与远程长裤中的版本一致,这样能够大大降低冲突发生的概率。

3.3解决冲突

按照图片中的步骤,顺序不能乱,先stash,然后pull,最后unstash

第一步:暂存代码,idea会恢复到上次更新后的代码,将修改的代码隔离出去

第二步:将远程仓库的代码拉下来

第三步:将暂存的代码还原回来
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
从左至右

1 本地代码更新后的代码

2 合并后的代码

3 暂存文件的代码

在这里插入图片描述
Nginx应用与实战

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值