GIT:git 教程

1. 版本控制

版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看备份

它的作用如下:

  1. 实现跨区域多人协同开发。
  2. 追踪和记载一个或者多个文件的历史记录。
  3. 组织和保护你的源代码和文档。
  4. 统计工作量。
  5. 并行开发、提高开发效率。
  6. 跟踪记录整个软件的开发过程。
  7. 减轻开发人员的负担,节省时间,同时降低人为错误。
    简而言之就是用于管理多人协同开发的技术。

1.1Git 与 SVN 区别

SVN 是集中式版本控制系统,版本库是放在中央服务器的。

请添加图片描述
工作的时候,首先要从中央服务器得到最新的版本,完成工作后,需要把自己的代码推送到中央服务器。集中式版本控制系统是必须联网才能工作,且对网络带宽要求较高。

Git 是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。

请添加图片描述
工作的时候不需要联网,因为版本都在自己电脑上。待有网络后,把本地的版本推送到远程即可。

1.2 Git工作流程图

请添加图片描述

命令如下:

clone(克隆): 从远程仓库中克隆代码到本地仓库

checkout (检出):从本地仓库中检出一个仓库分支然后进行修订

add(添加): 在提交前先将代码提交到暂存区

commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本

fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge

push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

2. Git的下载与安装

本教程里的git命令例子都是在Git Bash中演示的,会用到一些基本的linux命令,在此为大家提前列举:

ls/ll 查看当前目录 ll是查看当前文件夹下的所有文件,包括隐藏文件

cat 查看文件内容

touch 创建文件

vi vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编辑器)

2.1 下载

方式一:打开 Git 官网,点击 Download for Windows(由于国内网络限制,一般下载会很缓慢)。

方式二:国内可以使用 淘宝镜像下载 或者 华为镜像下载(其他的国外资源也都可以在这两个镜像下载)。

2.2 安装

2.2.1、傻瓜式安装一路下一步

在这里插入图片描述

3 Git的启动

在这里插入图片描述
在这里插入图片描述
备注:

Git GUI:Git提供的图形界面工具

Git Bash:Git提供的命令行工具

3.1 配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

Git版本控制要记录哪个人什么时候做了什么事情,Git就是通过邮箱去辨识是哪个人的

所有的配置文件,其实都保存在本地。

Git\etc\gitconfig:Git 安装目录下的 gitconfig,存储系统级配置。
C:\Users\Administrator.gitconfig:用户目录下的 gitconfig,只适用于当前登录用户的配置。
当安装 Git 后首先要做的事情是设置用户名称邮箱地址。每次 Git 提交都会使用该信息,它会被永远的嵌入到操作记录中。

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

--global参数为全局配置,Git 将总是会使用该配置来处理用户在系统中所做的一切操作。如果希望在特定项目中使用不同的用户名或邮箱,可以在该项目中运行该命令不加 --global 参数。

以上操作也可以通过编辑 C:\Users\用户名.gitconfig 文件来实现,效果完全一致。

3.2 查看配置信息

git config --global user.name

git config --global user.email

4 Git理论知识

4.1 四个区域

Git 本地有 3 个工作区域

工作目录(Workspace):存放项目代码的地方。
缓存区(Stage):存放临时的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
资源库(Repository):安全存放数据的位置,这里面有提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。

Git 远程有 1 个工作区域

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

文件在这四个区域之间的转换关系如下:
在这里插入图片描述

5. 仓库搭建

5.1 搭建本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库

1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
2)进入这个目录中,点击右键打开Git bash窗口
3)执行命令git init
4)如果创建成功后可在文件夹下看到隐藏的.git目录。
在这里插入图片描述

5.2 克隆远程仓库

我们还可以克隆创建好的远程仓库到本地仓库,这种方式是将远程服务器上的仓库完全镜像一份至本地,就像克隆,所以使用 git clone

git clone +仓库地址

5.3 本地项目上传到远程仓库

大家可以看这篇文章 如何将本地文件上传到Gitee

6. 基础操作指令

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git

的命令而发生变化。

6.1 查看修改的状态(status)

  • 作用:查看的修改的状态(暂存区、工作区)
  • 命令形式:git status

6.2 添加工作区到暂存区(add)

  • 作用:添加工作区一个或多个文件的修改到暂存区
  • 命令形式:git add 单个文件名|通配符
  • 将所有修改加入暂存区:git add .

6.3 提交暂存区到本地仓库(commit)

  • 作用:提交暂存区汇总所有内容到本地仓库的当前分支
  • 命令形式:git commit -m ‘注释内容’

提交时候添加的备注会被放到日志中
提交完后显示缓冲区没有东西可以提交了

6.4 版本回退

撤回到之前的某个操作,他回去删除我们撤回到位置之后的版本

作用:版本切换
命令形式:git reset --hard commitID
commitID 可以使用 git-log 或 git log 指令查看

如何查看已经删除的记录?

git reflog
这个指令可以看到已经删除的提交记录

我们可以在reflog里面知道删除文件的id,我们可以直接使用命令git reset --hard commitID 还原

所以git reset --hard commitID既可以做版本回退,也可以做版本还原

6.5 忽略文件

有时候我们不想把某些文件纳入版本控制中,比如数据库文件、临时文件、设计文件等。

在主目录下建立 .gitignore 文件,此文件有如下规则

  • 忽略文件中的空行或以 # 开始的行代表注释行,将会被忽略。
  • 可以使用 Linux 通配符。例如:* 代表任意多个字符,? 代表一个字符,[ ] 代表可选字符范围,{ } 代表可选的字符串。
  • 如果名称的最前面有一个 !,表示例外规则,将不被忽略。
  • 如果名称的最前面是一个 /,表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  • 如果名称的最后面是一个 /,表示要忽略的是此目录下的所有文件。
*.txt        # 忽略所有 .txt 结尾的文件,这样的话上传就不会被选中。
!lib.txt     # lib.txt 除外
/temp        # 仅忽略项目根目录下的 temp 文件,不包括其它 temp 目录。
build/       # 忽略 build/ 目录下的所有文件。
doc/*.txt    # 忽略 doc/notes.txt 但不包括 doc/server/arch.txt。

7.分支

7.1 概述

分支用于管理不同的线路的版本内容。类似于科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那就没什么影响;如果在某个时间点,两个平行宇宙合并了,就需要处理一些问题了。

7.2 命令

  • 列出所有本地分支:
git branch

*号表示所在的分支

  • 列出所有远程分支:
git branch -r
  • 新建分支

新建本地分支并停留

git branch 分支名

新建本地分支并切换

git checkout -b 分支名

新建远程分支:

git push origin 远程分支名:本地分支名

建议两个分支同名,方便管理。

7.3合并分支

合并本地分支到当前分支:

git merge 分支名

合并远程分支到当前分支则加上 origin/

git merge origin/分支名

删除本地分支:

git branch -d 分支名

删除远程分支:

git branch -dr [remote/branch]
或者
git push origin --delete [branch-name]

7.4 冲突解决

如果同一个文件在合并分支时本地和远程都修改了则会引起冲突。解决的办法是修改冲突文件后重新提交。这里就要做出选择,保留别人的代码还是自己的代码还是综合各自的代码。

master 作为主分支应该非常稳定,用来发布新版本,一般情况下只允许合并,不允许修改。开发工作一般情况下从 master 上新建 dev 分支进行开发,开发完成后,如需上线发布,dev 分支代码再合并到 master 分支上来。

8 在Idea中使用Git

8.1 在Idea中配置Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的git选项:
在这里插入图片描述
在这里插入图片描述

点击Test按钮,现在执行成功,配置完成

8.2 在Idea中操作Git

场景:本地已经有一个项目,但是并不是git项目,我们需要将这个放到码云的仓库里,和其他开发人员继续一起协作开发。

8.2.1 创建项目远程仓库

在这里插入图片描述

8.2.2 初始化本地仓库(将当前项目初始化为仓库)

在idea中创建文件的时候,它会询问你是否要将文件添加到git中,修改文件的时候,idea会自动帮我们去add,我们只需要去commit就好了
在这里插入图片描述
此时我们的项目目录就变成了一个本地仓库
在这里插入图片描述

绿色的文件代表已添加到git中
爆红的文件没有被添加到git当中,被Git识别为冲突文件
灰色的文件代表已忽略的文件,可以在gitignore文件中配置

8.2.3 设置远程仓库

远程仓库名默认为origin
在这里插入图片描述

8.2.4 提交到本地仓库

在这里插入图片描述

8.2.5 推送到远程仓库

在将本地仓库的修改推送到git远程仓库的时候,我们要先pull,先拿到此时远程仓库的版本信息,再去此版本信息上修改
在这里插入图片描述

8.2.7 克隆远程仓库到本地

在这里插入图片描述

8.2.8 创建分支
  • 最常规的方式
    在这里插入图片描述
  • 最强大的的方式
    在这里插入图片描述

9. IDEA常用GIT操作入口

9.1 第一张图上的快捷入口可以基本满足开发的需求。

在这里插入图片描述

9.2第二张图是更多在IDEA操作git的入口。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48622654/article/details/130474595