Git

Git

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具

Git工作机制

img

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

  • 局域网

GitLab

  • 互联网

GitHub(外网)

Gitee码云(国内网站)

Git安装

​ 官网地址: https://git-scm.com/或https://github.com/git-for-windows/git/releases

推荐安装 git2.40.0版本

Git常用命令

命令名称 作用
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

设置用户签名

git config --global user.name 用户名

git config --global user.email 邮箱

全局范围的签名设置:

git config --global user.name Layne
git config --global user.email Layne@atguigu.com
git config --list
cat ~/.gitconfig

说明:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

初始化本地库

git init

image-20230627131721466

查看本地库状态

git status

首次查看(工作区没有文件)

image-20230627132109306

新增文件

image-20230627132215734

image-20230627132317963

再次查看(检测到未追踪文件)

image-20230627132547573

添加暂存区

git add 文件名

image-20230627132954523

提交本地库

git commit -m "日志信息" 文件名

image-20230627133335748

历史版本

git reflog 查看版本信息

git log 查看版本详细信息

image-20230627134228811

版本穿梭

git reset --hard 版本号

--首先查看当前的历史记录,可以看到当前是在48f4e22这个版本

image-20230627134422376

--切换到之前版本,8ca80d7版本,也就是我们第一次提交的版本

image-20230627134533136

Git分支操作

img

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)。image-20240918143904101

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的操作

命令名称 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
git branch -d 分支名 删除指定分支

查看分支

git branch -v

image-20230627135136847

创建分支

git branch 分支名

image-20230627135331197

切换分支

git checkout 分支名

--分支由master改为hot-fix

image-20230627161146988

合并分支

git merge 分支名

-- 切换回到master分支

image-20230627161644314

-- 在master分支上合并hot-fix分支

image-20230627161728843

冲突产生的原因

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

查看状态(检测到有文件有两处修改)

解决冲突

编辑有冲突的文件

删除特殊符号,决定要使用的内容

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

image-20230627162115286

添加到暂存区

image-20230627162209093

执行提交

注意:此时使用git commit命令时不能带文件名

image-20230627162314679

-- 发现后面MERGING消失,变为正常

分支合并代码

注意: 如果代码合并完成之后,分支结构的代码依然没有更新,如果需要和主分支一样 则执行代码合并

git merge master

image-20230816201558577

创建分支和切换分支图解

img

master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。

HEAD如果指向master,那么我们现在就在master分支上,HEAD如果执行hotfix,那么我们现在就在hotfix分支上。

所以切换分支的本质就是移动HEAD指针。

Gitee(码云)操作

Git 代码托管服务

前面我们已经知道了Git中存在两种类型的仓库,即本地仓库远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

l gitHub( 地址:https://github.com/

是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub

l 码云(地址: https://gitee.com/

国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

l GitLab (地址: https://about.gitlab.com/

是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

Gitee简介

1.是什么: gitee是一个git项目托管网站,主要提供基于git的版本托管服务

2.能干嘛: gitee是一个基于git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

wps28

3.去哪下: https://gitee.com/

码云帐号注册和登录

进入码云官网地址:https://gitee.com/,点击注册Gitee

创建远程仓库

image-20240918153009483

远程仓库操作

命令名称* 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名 origin
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git remote rm 别名 删除现有远程库连接

创建远程仓库别名

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

git remote add 别名 远程地址

推送本地分支到远程仓库

git push 别名 分支名

第一次需要输入码云的用户名和密码

注意:推送时当前版本要和远程仓库版本一致才能推送。

克隆远程仓库到本地

git clone 远程地址

拉取远程库内容

git pull 远程库地址别名 远程分支名

邀请加入团队

点击管理**

img

选择仓库成员管理

wps43

IDEA集成Git(本地库)

首先配置Git忽略文件

(1) 创建忽略规则文件

  • 文件名称:xxxx.ignore(前缀名随便起,建议是git.ignore)

  • 这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下

  • git.ignore文件模版内容如下

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

image-20240528092350939

(2)在.gitconfig文件中引用

(此文件在Windows的家目录中)

[user]
	name = Layne
	email = Layne@atguigu.com
[core]
	excludesfile = C:/Users/asus/git.ignore

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

定位Git程序

image-20230627171100646

初始化本地库

image-20230627171156663

选择要创建Git本地仓库的工程。

image-20230627171258993

添加到暂存区

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

image-20230627171351854

提交到本地库

右键点击git 点击Commit directory

image-20230627171511686

切换版本

查看历史版本

wps66

img

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

img

创建分支

选择Git,在Repository里面,点击Branches按钮。

img

在弹出的Git Branches框里,点击New Branch按钮。

img

填写分支名称,创建hot-fix分支。

wps71

然后看到hot-fix,说明分支创建成功,并且当前已经切换成hot-fix分支

wps72

切换分支

切换到master分支

img

合并分支

切换到master分支,将hot-fix分支合并到当前master分支。

img

如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。

wps75

解决冲突

如图所示,如果master分支和hot-fix分支都修改了代码,在合并分支的时候就会发生冲突。

wps76

img

我们现在站在master分支上合并hot-fix分支,就会发生代码冲突。

img

点击Conflicts框里的Merge按钮,进行手动合并代码。

wps79

手动合并完代码以后,点击右下角的Apply按钮。

img

代码冲突解决,自动提交本地库。

img

IDEA集成Gitee(码云)

DEA安装码云插件

Idea默认不带码云插件,我们第一步要安装Gitee插件

如图所示,在Idea插件商店搜索Gitee,然后点击右侧的Install按钮。

img

Idea重启以后在Version Control设置里面看到Gitee,说明码云插件安装成功

img

​ 然后在码云插件里面添加码云帐号,我们就可以用Idea连接码云了。

img

image-20240918175548909

push推送本地库到远程库

首先在Idea里面创建一个工程,初始化git工程,然后将代码添加到暂存区,提交到本地库,这些步骤上面已经讲过,此处不再赘述。

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

image-20230627192612272

自定义远程库链接。

image-20230627192704469

给远程库链接定义个name,然后再URL里面填入码云远程库的链接即可

image-20230627192906905

然后选择定义好的远程链接,点击Push即可

image-20230627192951068

pull拉取远程库到本地库

右键点击项目,可以将远程仓库的内容pull到本地仓库。

image-20230627193430355

选择远程库

image-20230627193601024

pull了远程库中最新内容

image-20230627193719625

注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

posted @ 2024-09-25 09:45  CH_song  阅读(18)  评论(0)    收藏  举报