Git学习笔记


Git

一.Git的简介和安装

1.1Git简介

Linux 之父 Linus 在 1991 年创建开源的 Linux 操作系统之后,多年来依靠全世界广大热心志愿者的共同建设,经过长足发展,现已成为世界上最大的服务器系统。系统创建之初,代码贡献者将源码文件发送给 Linus,由其手动合并。这种方式维持多年后,代码量已经庞大到人工合并难以为继,于是深恶集中式版本控制系统的 Linus 选择了一个分布式商业版本控制系统 BitKeeper,不过 Linux 社区的建设者们可以免费使用它。BitKeeper 改变了 Linus 对版本控制的认识,同时 Linus 发现 BitKeeper 有一些不足,而且有个关键性的问题使之不能被广泛使用,就是不开源。

在 2005 年,BitKeeper 所在公司发现 Linux 社区有人企图破解它,BitKeeper 决定收回 Linux 社区的免费使用权。Linus 对此事调解数周无果,找遍了当时已知的各种版本控制系统,没有一个看上眼的,一怒之下决定自己搞一个。Linus 花了十天时间用 C 语言写好了一个开源的版本控制系统,就是著名的 Git。

2007 年旧金山三个年轻人觉得 Git 是个好东西,就搞了一个公司名字叫 GitHub,第二年上线了使用 Ruby 编写的同名网站 GitHub,这是一个基于 Git 的免费代码托管网站(有付费服务)。十年间,该网站迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。2018 年 6 月,GitHub 被财大气粗的 Microsoft 收购。2019 年 1 月 GitHub 宣布用户可以免费创建私有仓库。根据 2018 年 10 月的 GitHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万企业入驻。

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

1.2集中式版本控制系统

image-20221018194814392

优点:

SVN版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器

缺点:

必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了

1、版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?

2、程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,怎么破?

3、系统正在上线运行,时不时还要修改bug,要增加好几个功能要几个月,如何管理几个版本?

4、如何管理一个分布在世界各地、互不相识的大型开发团队?

1.3分布式版本控制系统

image-20221018200617932

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

1.4Git工作机制

image-20221018202104215

注意,所有 Git 命令都以 git 开头。

1.5Git安装

下载地址:https://git-scm.com/download

image-20221018200511831

1.5.1浏览协议,下一步

image-20221018203359801

1.5.2选择安装位置,下一步

image-20221018203601137

1.5.3Git Bash需要选择,其余下一步就好

image-20221018204345638

1.5.4默认下一步

image-20221018204535145

1.5.5默认编辑器,下一步

image-20221018204652005

1.5.6默认下一步

image-20221018204856546

1.5.7选择git命令执行环境

这里推荐选择第一个,就是单独用户Git自己的命令行窗口。

image-20221018205059640

1.5.8 HTTPS传输协议:使用SSL传输协议

image-20221018205345221

image-20221018205422347

1.5.9Configuring the line ending conversions

选第一个

image-20221018205533821

1.5.10terminal emulator

第一个选项:使用专用的Git窗口(推荐)

第二个选项:使用windows的cmd命令行窗口。

image-20221018205911479

image-20221018210055615

1.5.11 其余都默认即可安装完成

image-20221018210123873

image-20221018210212403

安装完成后,在任意的文件目录下,右键都可以开打Git的命令行窗口。

image-20221018210719073

Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。

--global 表示全局属性,所有的git项目都会共用属性

git config --global user.name "用户名"
git config --global user.email "用户邮箱"

image-20221018211057201

C:\Users\Administrator路径下的.gitconfig文件里面可以看到,如果不用命令,也可以直接在文件中进行设置。

image-20221018211335827

二.Git的实操

2.1创建本地库

创建目录(用作本地版本库):C:\GITRepository\git-demo

C:\GITRepository\git-demo目录打开Git Bash窗口,初始化仓库:git init

image-20221018212049811

Git Bash窗口里面可以使用Linux命令

2.2查看状态

image-20221018213932162

2.3创建编辑文件

image-20221018214255482

2.4将文件添加到暂存区

git add hello.txt

image-20221018215006491

2.5将文件提交到本地库

-m 接注释内容

git  commit -m "第一次提交" hello.txt

image-20221018215841993

查看版本信息

$ git log

2.6修改文件

修改hello.txt 文件,随便添加一些内容

image-20221018220715448

修改后查看状态 hello文件又爆红了,表示修改后的文件还没有被添加到暂存区

添加暂存区,并提交修改

git add hello.txt
git commit -m "第二次提交" hello.txt

2.7历史版本

2.7.1查看历史版本

git reflog 查看版本信息

git log 查看版本详细信息

image-20221018222140129

2.7.2版本选择

git reset --hard 版本号 

三.git分支

系统上线后,又要修改bug,又要开发新的功能,由于新功能没有开发完,所以需要建立分支,一边修改bug,一边开发新功能,最终合并.

image-20221025064316286

3.1查看分支

git branch -v

image-20221020063420392

3.2创建分支

创建测试分支 git branch <分支名>
git branch test

image-20221020064139217

3.3切换分支

切换到test分支 git checkout <分支名>

image-20221020064328739

3.3.1在test分支下创建a.java,添加暂存区,提交本地库

touch a.java
git add a.java
git commit -m "测试分支第一次提交" a.txt

3.3.2切换回master分支,查看是否修改

git chechout master
ls

发现test创建的a.java在master没有

image-20221020065750389

3.4合并分支

先切换到主干分支,然后合并分支

git checkout master
git merge test

image-20221020070043378

此时可以看见test分支上的修改,分支合并完成

3.5删除分支

删除test分支

git branch -d test

查看分支

git branch -v

image-20221020070603722

3.6版本冲突

3.6.1test分支操作

创建test分支
git branch test
切换分支到
git checkout test
修改a.java,添加1行数据
vim a.java
把a.java添加到暂存区
git add a.java
把a.java提交到本地库
git commit -m "test修改a.java"

image-20221024164000767

3.6.2master分支操作

切换到master分支
git checkout master
修改a.java,添加1行数据
vim a.java
把a.java添加到暂存区
git add a.java
把a.java提交到本地库
git commit -m "test修改a.java" a.java
产生冲突
git merge test

image-20221024165255180

产生冲突原因:test分支和master分支在同一个文件的相同位置有两套不同的修改,git无法决定使用哪一套代码,必须人为决定新代码的内容。

3.6.3解决冲突

查看冲突文件
cat a.java
手动解决,修改冲突文件,留下需要的代码
vim a.java
添加、提交解决冲突
git add a.java
git commit -m "分支合并,解决冲突" 

image-20221024165456445

四、IDEA集成Git

4.1配置忽略文件

这些文件与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。

# Compiled class file
*.class

# Eclipse
.project
.classpath
.settings/

# Intellij
*.ipr
*.iml
*.iws
.idea/

# Maven
target/

# Gradle
build
.gradle

# Log file
*.log
log/

# out
**/out/

# Mac
.DS_Store

# others
*.jar
*.war
*.zip
*.tar
*.tar.gz
*.pid
*.orig
temp/

创建git.ignore文件,把上诉内容添加进去并在~/.gitconfig中引用

注意: 这里要使用“正斜线(/)”,不要使用“反斜线(\)”

[user]
	name = liuzhihao
	email = lzhgy163@163.com
[core]
	excludesfile =C:/Users/刘智豪/git.ignore

4.2找到git安装位置

左上角file->settings

image-20221024180044092

4.3初始化版本信息

image-20221024180743025

4.4添加到暂存区

右键点击项目选择Git->Add将项目添加到暂存区。

image-20221024190045452

4.5提交到本地库

image-20221024190307405

image-20221024190657749

4.6切换版本

在IDEA的左下角,点击git,然后点击Log查看版本

image-20221024191320113

右键选择要切换的版本,然后在菜单里点击CheckoutRevision

image-20221024191511388

4.7创建分支

git->branches

image-20221024191844462

在弹出的GitBranches框里,点击NewBranch按钮。

image-20221024191948588

4.8切换分支

右下角可以选择分支

image-20221024192229008

4.9合并分支

Git->Merge

image-20221024192726777

image-20221024192707700

4.10版本冲突

在test分支上修改代码,并提交到版本库

image-20221024194152056

在master分支上相同位置修改代码,并提交到版本库

image-20221024194536995

把test分支合并到master分支

image-20221024194608494

产生冲突手动解决冲突

image-20221024195209653

五、码云

码云(Gitee)是开源中国社区推出的代码托管协作开发平台,支持Git,提供免费的私有仓库托管。Gitee目前已经成为国内最大的代码托管平台。帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改,提供稳定、高效、安全的云端软件开发协作平台。无论是个人、团队或是企业,都能够用Gitee实现代码托管、项目管理、协作开发。其网址是https://gitee.com/,使用方式跟GitHub一样,而且它还是一个中文网站。

5.1账号注册

登录官网https://gitee.com/,点击注册,依次填写内容

image-20221024174321046

image-20221024174340830

5.2账号登录

输入账号密码登录

image-20221024195354358

5.3创建远程仓库

点击右上角,创建仓库

image-20221024195811908

image-20221024200156018

5.4idea集成码云

安装getee插件

image-20221024201843909

账号密码登录

image-20221024202137801

将本地代码push到码云远程库

image-20221024202523494

自定义远程库连接

image-20221024202637405

image-20221024202902549

点击push完成上传

评论