Git 学习笔记

Git


版本控制

版本控制,版本迭代,新的版本!版本管理器

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

1. 本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或者是记录补丁文件,适合个人用,如RCS,日期分割

  • Local Computer
    • Version Database -> version1,2,3
    • Chekcout -> file

2. 集中版本控制:SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
在这里插入图片描述
所有的版本数据都存在服务器上,用户的本地只有自己之前的所有版本,不连网用户就看不到历史版本,服务器坏了,数据就没了,解决方案:定期备份。代表产品:SVN

3. 分布式版本控制:GIT
每个人都拥有全部的代码!安全隐患!

所有版本信息仓库全部同步到本地的每个用户,可以在本地查看所有历史版本,可以离线在本地提交。
由于每个用户哪里保存的都是所有版本的数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况。
在这里插入图片描述

Git与SVN最主要区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统必须联网才能工作,对网络宽带要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑是一个完整的版本库,工作的时候不需要联网,因为版本都在自己电脑上。协同的方法:自己在电脑上改了文件A,其他人也在电脑上改了文件A,这是,两个人之间只需要把各自的修改推送给对方,就可以互相看到对方的修改 。Git可以直接查看到更新了哪些代码和文件!

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


Git历史

Linux 内核开源项目有着广为人数的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002)。到 2002 年,整个项目开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了2005年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux内核社区免费使用 BitKeeper 的权利。这就迫使 Linux 开源社区基于使用 BitKeeper 时的经验教训,开发出自己的版本系统,也就是后来的Git(2周左右)。

Git是目前世界上最先进的分布式版本控制系统
Git是免费的、开源的,最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper 。

Linux和Git之父(Linus Benedic Torvalds)1969、芬兰


Git环境配置

下载
所有东西下载慢的话就可以去找镜像。

官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/

windows下载exe,下载对应的版本即可安装。无脑下一步!

卸载:

  • 检查电脑环境变量,清理与Git相关
  • 程序和功能中,卸载Git

启动

安装成功后在开始菜单会有Git项,下面有3个程序。
在这里插入图片描述

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

基本的Linux命令

平时一定要多使用这些基础的命令!

  • cd:改变目录。
  • cd…:回退上一个目录,直接cd进入默认目录。
  • pwd:显示当前所在的目录路径。
  • ls(ll):都是列出当前目录中的所有文件,只不过II(两个II)列出的内容更为详细。
  • touch:新建一个文件 如touch index.js就会在当前目录下新建一个index.js文件。
  • rm:删除一个文件。
  • mkdir:新建一个目录,就是一个文件夹。
  • rm -r:删除一个文件夹。rm -r src 删除src目录。
  • mv移动文件,mv index.html test 把 index.html 移动到 test 目录下。
  • reset:重新初始化终端/清屏。
  • history:查看命令历史。
  • help:帮助。
  • exit:退出。
  • #表示注释。

Git配置

查看配置
git config -l

查看系统配置
git config --system --list

查看本地配置
git config --global --list
user.name 和 user.email必须配置

设置用户名与邮箱(用户配置,必须设置)

git config --global user.name "xxx"
git config --global user.email "xxx"


Git基本理论(核心)

工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

在这里插入图片描述

  • git add files – git checkout
  • git commit – git reset
  • git push – git pull

Workspace:工作区,平时存放项目代码的地方

Index/Stage:暂存区,临时存放你的改动,实际是一个文件,保存即将提交文件列表信息

Repository:仓库区(本地仓库)安全存放数据的位置,里面有你提交所有版本的数据,其中HEAD指向最新放入仓库的版本

Remote:远程仓库,托管代码的服务器,可以简单认为是你项目中的一台电脑,用于远程数据交换

本地的三个区域确切的说应该是git仓库中HEAD指向的版本:
在这里插入图片描述

工作流程

  1. 在工作目录中添加、修改文件‘
  2. 将需要进行版本管理的文件放入暂存区域 git add
  3. 将暂存区域的文件提交到git仓库 git commit

因此,git管理文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)


Git项目搭建

创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。日常使用只要记住下图6个命令:

在这里插入图片描述

体验

本地仓库搭建

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。

1、创建全新的仓库,需要用GIT管理的项目的根目录执行:
$ git init

2、执行后,在项目目录多了一个.git的隐藏目录,关于版本等所有信息都在这个目录里面。

克隆远程仓库

1、 克隆远程目录,将远程服务器上的仓库(gitee)完全镜像一份至本地
$ git clone [url] https://gitee.com/kuangstudy/kuang_livenote.git

2、去gitee或github上克隆一个试试


Git文件操作

文件的四种状态

  • Untracked:未跟踪,文件在文件夹中,但并没有加入到git库,不参与版本控制,通过 git add 状态为Staged

  • Unmodify:文件已入库,未修改,版本库中的文件快照内容与文件夹中完全一致。这类文件有两种去处,如果它被修改,而变为Modified,如果使用git rm移出版本库,则成为Untracked文件

  • Modified:文件已修改,仅仅是修改,没有进行其他操作,这个文件有两个去处,通过git add可进入暂存staged状态,使用git checkout则丢弃修改过,返回到umodify状态,这个git checkout即从库中取出文件,覆盖当前修改。

  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态为Modified

hello.java -> git add . => 暂存区 => git commit => 远程仓库

查看文件状态

# 查看指定文件状态
git status [filename]

# 查看所有文件状态
git status

# git add . 				添加所有文件到暂存区

# git commit -m "消息内容"	提交暂存区中的内容到本地仓库 -m 提交信息

忽略文件

在主目录下建立 “.gitignore” 文件

#为注释
☆.txt 			# 忽略所有 .txt结尾的文件,这样上传就不会被选中
!lib.txt		# lib.txt除外
/temp			# 忽略项目根目录下的TODO文件,不包括其他目录temp
build/			# 忽略build/目录下的所有文件
doc/☆.txt 	# 忽略 doc/notes.txt 但不包括	doc/server/arch.txt

例:

*.class
*.log
*.lock

# Package Files #
*.jar
*.war
*.ear
target/

# idea
.idea/
*.iml

*velocity.log*

### STS ###
.apt_generated
.factorypath
.springBeans

### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/

*.log
tmp/

#rebel
*rebel.xml

使用码云

github 是有墙的,比较慢,在国内,一般使用gitee,有时会搭建自己的gitlab服务器

  1. 注册登录码云,完善个人信息
  2. 设置本机绑定SSH公钥,实现免密登录(免密码登录,这一步挺重要的,码云是远程仓库,我们平时在本地仓库)
进入 本地.ssh目录
生成公钥
ssh-keygen
生成公钥后会生成两个文件

在这里插入图片描述
3. 将公钥信息 public key 添加到码云账户中即可。
4. 使用码云创建一个自己的仓库。

许可证:开源是否开源随意转载,开源但是不能商业使用,不能转载。

克隆到本地。


IDEA中集成Git

  1. 新建项目,绑定git
  • 将我们远程git文件目录拷贝到项目中即可
  1. 修改文件,使用IDEA操作git
  • 添加到暂存区
  • commit 提交
  • push到远程仓库
  1. 提交测试

这些都是单个人的操作。


Git分支

分支在GIT中相对较难,分支就是科幻电影里的平行宇宙,如果两个宇宙互不干扰,那对现在的你没什么影响,不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了。
在这里插入图片描述
在这里插入图片描述

列出分支
git branch
列出所有远程分支
git branch -r
新建一个分支,但依旧停留在当前分支
git branch [branch-name]
新建一个分支,并切换到该分支
git checkout -b [branch]
合并指定分支到当前分支
git merge [branch]
删除分支
git branch -d [branch-name]
删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/barnch]

多个分支如果并行执行,就会导致我们代码不冲突,也就是同时存在多个版本。

web-api			-A组开发 (Restful.xx())
web-admin		-B组开发
web-app			-C组开发

B 会调用 A (修改了A的代码)
C 会调用 B 和 A 的代码

如果冲突了就需要协商即可。

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法就是我们开源修改冲突文件后重新提交。选择要保留他的代码还是你的代码。

master主分支应该非常文档,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者dev分支代码稳定后可以合并到主分支master上。
在这里插入图片描述

练习:找个小伙伴,一起搭建一个远程仓库,来练习Git。


笔记参照视频 B站up主 : 狂神说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值