Git概述及基本操作

一.Git简介

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

首先,版本管理系统能干什么:

  • 协同开发
  • 冲突解决
  • 版本记录
  • 历史追查
  • 代码备份
  • 版本还原
  • 权限管理
  • 分支管理
  • 代码审查

在这里插入图片描述

而经典的集中管理型,如:CVS、VSS、SVN之类的集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。

其特点是:

  • 实现了大部分开发中对版本管理的需求
  • 结构简单,上手容易

在这里插入图片描述

但也存在着一些弊端:

  • 1、版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
  • 2、程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,以便追溯查询,怎么破?
  • 3、系统正在上线运行,时不时还要修改bug,要增加好几个功能要几个月,如何管理几个版本
  • 4、如何管理一个分布在世界各地、互不相识的大型开发团队

对应的分布式版本控制系统Git与GitHub,有着以下优点:

  • 容灾能力强
  • 本地版本管理
  • 异地协作
  • 灵活分支

在这里插入图片描述

具体见“集中式vs分布式


二.Git的基本操作

详细操作见Git文档:https://git-scm.com/doc

理解:工作区+暂存区+本地库

要理解Git每一步操作的目的与作用,首先要理解Git中的工作区、暂存区与本地库:

  • 工作区(Working Directory):就是你电脑本地硬盘目录
  • 本地库(Repository):工作区有个隐藏目录.git,它就是Git的本地版本库
  • 暂存区(stage):一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

在这里插入图片描述

设置全局属性:用户名与邮箱地址

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

git config --global user.name "name"

git config --global user.email "name@***"
  • –global 表示全局属性,所有的git项目都会共用属性(每个版本库也可以单独设置)
  • 如果是windows系统下,可以在C:\Users\Administrator路径下的.gitconfig文件里面看到配置信息

1.创建本地版本库 repository:git init

repository可以理解为一个文件目录,该目录中记录着所有关于文件的操作记录,并可以根据这些记录对版本进行回退、还原等操作。

1)首先,在合适位置,创建一个空目录,作为版本库的文件目录:

$ mkdir test
$ cd test
$ pwd
/Users/test

2)创建版本库:在项目文件夹内执行git init ,通过git init命令把这个文件目录变成Git可以管理的仓库

git init

执行此命令之后,test目录下会有一个**.git的隐藏文件夹**,此文件夹是Git用来跟踪管理版本库,以及一些配置信息。

3)配置该版本库用户名与邮箱属性:

git config user.name "name"

git config user.email "name@***"

该属性为本目录自有,其在.git文件夹下的config文件汇总

2.提交文件:git status/add/commit

  • 1)新建文件后,通过git status 进行查看文件状态
  • 2)将文件添加到暂存区 git add 文件名
  • 3)提交文件到本地库 git commit
    • 编写注释 ,完成提交
  • 4)或者也可以git commit –m “注释内容”, 直接带注释提交
git status 
git add 文件名
git commit
git commit -m "comment"

3.查看文件提交记录:git log

# 查看历史记录
git log 文件名  

# 简易信息查看
git log  --pretty=oneline 文件名

4.回退历史:git reset --hard HEAD^

# 1.回退到上一次提交
git  reset  --hard HEAD^   
# 2.回退n次操作
git  reset  --hard HEAD~n  

5.版本穿越:git reflog/reset

# 1)查看历史记录的版本号
git  reflog  文件名
# 2)直接回退到该号对应版本 
git  reset  --hard  版本号

6.还原文件(没有add和commit的前提下)

git  checkout -- 文件名  

7.删除某个文件

先删除文件,再git add ,再git commit


三.Git分支

系统上线了,但是产品经理又提了新的需求,评估一下工期要两个月,但是同时系统正在上线运行,时不时还要修改bug,如何管理几个版本?

在这里插入图片描述

Git通过分支branch来实现项目的版本控制。

1.创建分支:git branch <分支名>

# 创建分支
git branch  <分支名>
# 查看分支
git branch –v  
# 删除分支
git branch –d <分支名> 

2.切换分支:git checkout <分支名>

# 切换分支
git checkout  <分支名>
# 一步完成(创建新分支并跳转) 
git checkout  –b  <分支名>

3.合并分支:git merge <分支名>

# 先切换到主干   
git  checkout  master
# 合并分支
git  merge  <分支名>

4.合并时冲突:git diff

1)冲突

  • 一般指同一个文件同一位置的代码,在两种版本合并时版本管理软件无法判断到底应该保留哪个版本,因此会提示该文件发生冲突,需要程序员来手工判断解决冲突。

在这里插入图片描述

2)合并时冲突:

  • git merge <分支名>程序合并时发生冲突系统会提示CONFLICT关键字;
  • 命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。

在这里插入图片描述

3)解决冲突

  • 此时通过git diff 可以找到发生冲突的文件及冲突的内容
  • 然后修改冲突文件的内容,再次git add 和git commit 提交后,后缀MERGING消失,说明冲突解决完成

在这里插入图片描述
在这里插入图片描述

四.配置Git忽略文件

1.为什么要忽略它们?

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

2.哪些文件需要忽略?

1)Eclipse特定文件

在这里插入图片描述

2)IDEA特定文件

在这里插入图片描述

3)Maven工程的target目录

在这里插入图片描述
3.如何忽略?

1)创建忽略规则文件——git.ignore

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

# 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

2) 在.gitconfig文件中引用忽略规则文件

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值