目录
[# Git基础](# Git基础)
[1. Git下载](#1. Git下载)
[2. Git三种程序命令](#2. Git三种程序命令)
[2.1 Git Bash基本命令](#2.1 Git Bash基本命令)
[2.2 Git更新项目命令](#2.2 Git更新项目命令)
[3. Git配置](#3. Git配置)
[3.1 设置用户名(EE配置)](#3.1 设置用户名(EE配置))
[3.2 查看用户名信息](#3.2 查看用户名信息)
[4. Git基本理论](#4. Git基本理论)
[5. Git项目搭建](#5. Git项目搭建)
[5.1 克隆远程仓库](#5.1 克隆远程仓库)
[5.2 指定本地克隆的目录](#5.2 指定本地克隆的目录)
[6. Git文件操作](#6. Git文件操作)
[6.1 查看文件状态](#6.1 查看文件状态)
[6.2 忽略文件](#6.2 忽略文件)
[7. IDEA集成Git操作](#7. IDEA集成Git操作)
[8. idea中git的使用](#8. idea中git的使用)
[8.1 代码生成器](#8.1 代码生成器)
[8.2 使用git在idea中的操作](#8.2 使用git在idea中的操作)
[8.3 操作版本Reset和Revert](#8.3 操作版本Reset和Revert)
[8.4 强制提交到远程命令行](#8.4 强制提交到远程命令行)
[8.5 查看当前提交的分支内容](#8.5 查看当前提交的分支内容)
[8.6 回退到上一个版本后悔后再去到当前版本](#8.6 回退到上一个版本后悔后再去到当前版本)
[8.7 分支操作的意义](#8.7 分支操作的意义)
[8.8 分支融合](#8.8 分支融合)
[8.9 把远程分支跟新到本地(更新git项目)](#8.9 把远程分支跟新到本地(更新git项目))
[8.10 取最新git代码](#8.10 取最新git代码)
[9. Git分支](#9. Git分支)
[10. Giee中的文件介绍](#10. Giee中的文件介绍)
[10.1 README.md文件](#10.1 README.md文件)
# Git基础
什么是分布式版本控制:
所有版本信息仓库全部同步到本地的每个用户,这样我们就可以在本都查看所有的版本历史,可以离线在本地提交,只需要在连网时push到相应的服务器或其他用户那里。
由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这也同时增加了本地存储空间的占用。
什么是Git:
Git是目前世界上最先进的分布式版本控制系统。
Git它是一个开源的分布式版本控制系统,它可以有效、高速地处理从很小到非常大的项目版本管理。它没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。
git协同的方法就是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了。
Git优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
Git缺点:
- 模式上比SVN更加复杂。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有的代码和版本信息。
1. Git下载
官网下载git:Git (git-scm.com)
打开官网下载git对应操作系统的版本。
淘宝镜像下载git:CNPM Binaries Mirror (npmmirror.com)
下载好后,根据系统类型安装git,本编是直接一直点击下一步的。
2. Git三种程序命令
安装成功后的Git在开始菜单中有3个Git程序。
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多。
Git CMD:Windows风格的命令行。
Git GUI:图像界面的Git,不建议初学者使用,尽量先熟悉常用的命令。
以下是Git Bash打开后的页面:
2.1 Git Bash基本命令
git bash的命令其实是跟linux命令是差不多的。
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 基本的Linux命令学习 |
| 1、 cd:改变目录。 |
| 2、cd . . :回退到上一个目录,直接cd进入默认目录。 |
| 3、 pwd:显示当前所在的目录路径。 |
| 4、ls(ll):都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。 |
| 5、touch:新建一个文件如(touch index.js)就会在当前目录下新建一个index.js文件。 |
| 6、rm:删除一个文件,rm index.js就会把index.js文件删除。 |
| 7、mkdir:新建一个目录,就是新建一个文件夹。 |
| 8、rm -r:删除一个文件夹,rm -r src删除src目录。 |
| 9、mv:用于移动或重命名一个文件、目录或软连接。 |
| 10、reset:重新初始化终端、清屏。 |
| 11、clear:清屏。 |
| 12、history:查看命令历史。 |
| 13、help:帮助。 |
| 14、exit:退出。 |
| 15、#:表示注释。 |
| 16、运行sudo rm -rf 文件夹名称
命令删除该文件夹。请注意,sudo
命令将以管理员权限运行,rm
命令用于删除文件和文件夹,-rf
选项用于递归地删除文件夹及其内容。请注意,rm -rf命令是一个强制删除命令,它将不会询问您是否确认删除操作,请确保您要删除的文件夹是正确的,并且您拥有足够的权限来执行删除操作。删除文件夹后,其中的所有内容都将被永久删除,请谨慎操作。 |
2.2 Git更新项目命令
要更新项目,可以使用以下步骤:
-
打开命令行终端或Git Bash。
-
导航到项目的本地目录,使用
cd
命令进入项目所在的文件夹。 -
运行
git status
命令,查看当前项目的状态。确保没有未提交的更改。 -
运行
git pull
命令,从远程仓库拉取最新的更新。如果项目关联了远程仓库,Git会自动合并或更新项目文件。 -
如果有冲突产生,Git会提示你解决冲突。你可以手动编辑文件,解决冲突后再提交更改。
-
运行
git status
命令,确保项目已经更新并且没有未提交的更改。 -
如果想要更新到特定的分支,可以使用
git checkout <branch-name>
切换到目标分支,然后再运行git pull
命令。 -
使用:
在git中,
git pull
命令用于从远程仓库获取最新的更新并合并到当前分支。其基本用法如下:bashgit pull <远程仓库名> <远程分支名>
例如,如果要从名为origin的远程仓库获取最新更新并合并到当前分支,可以使用以下命令:
bashgit pull origin master
这将获取远程仓库origin上的master分支的最新更新,并将其合并到当前所在的分支。如果当前分支与远程分支存在关联关系,也可以直接使用
git pull
命令,它会自动获取与当前分支关联的远程分支的更新并合并到当前分支。需要注意的是,
git pull
命令实际上是git fetch
和git merge
两个命令的组合,它会先从远程仓库获取最新的更新,然后将其合并到当前分支。因此,使用git pull
命令时需要确保当前分支没有未提交的修改,否则可能会导致合并冲突。
3. Git配置
查看配置命令:git congif -l
查看不同级别的配置文件:
bash
# 查看系统config
git config --system --list
# 查看当前用户(global)配置
git config --global --list
3.1 设置用户名(EE配置)
当我们安装Git后首先要做的事情是设置我们的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到你的提交中。
bash
git config --global user.name "zhangsan" #名称
git config --global user.email 123456@qq.com #邮箱
只需要做一次这个设置,如果你传递了---global选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作,如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要---global选项。总之---global为全局配置,不加为某个项目的特定配置。
3.2 查看用户名信息
bash
git config --global user.name (查看用户名) && git config --global user.email (查看用户邮箱)
4. Git基本理论
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace:工作区,就是我们平常存放代码的地方。
- Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
- Repository:仓库去(或本地仓库),就是安全存放数据的位置,这里有我们提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目中的一台电脑用于远程数据交换。
原理图:
5. Git项目搭建
init:初始化项目
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图6个命令:
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
- 创建全新的仓库,需要用GIT管理的项目的根目录执行:
bash
# 在当前目录新建一个Git代码库
$ git init
- 执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
5.1 克隆远程仓库
另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地。
bash
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
5.2 指定本地克隆的目录
在使用git clone
命令克隆项目时,可以通过指定目录来将项目克隆到指定的目录中。
使用以下命令来指定克隆项目到指定目录:
bash
git clone <repository> <directory>
其中,<repository>
是要克隆的项目的URL或路径,<directory>
是要将项目克隆到的目录的路径。
例如,要将项目克隆到名为my-project
的目录中,可以使用以下命令:
bash
git clone https://github.com/username/repository.git my-project
- 这将把
repository
克隆到当前目录下的my-project
目录中。如果my-project
目录不存在,Git会自动创建它。
6. Git文件操作
文件的4种状态:
版本控制就是对文件的版本控制,要对文件进行修改,提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
- Untracked:未跟踪,此文件在文件夹中,但没有加入到git库,不参与版本控制,通过
git add
状态变为Staged
。 - Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改,而变为
Modified
,如果使用git rm
移除版本库,则成为Untracked
文件。 - Modified:文件已修改,仅仅是修改,并没有进行其它的操作,这个文件也有两个去处,通过
git add
可进入暂存staged
状态,使用git checkout
则丢弃修改过,返回到unmodify
状态,这个git checkout
即从库中取出文件,覆盖当前修改! - Staged:暂存状态,执行
git commit
则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify
状态,执行git reset HEAD filename
取消暂存,文件状态为Modified
。
6.1 查看文件状态
通过如下命令可以查看到文件的状态:
bash
# 查看指定文件状态
git status [filename]
# 查看所有文件状态
git status
# 添加所有文件到暂存区
git add .
# 提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "消息内容"
6.2 忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设置文件等。
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。列如:星号(*)代表任意多个字符,问好(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,.....})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示列外规则,将不被忽略。
- 如果名称 的最前面是一个路劲分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
bash
# 为注释
*.txt # 忽略所有.txt结尾的文件,这样的话上传就不会被选中!
!lib.txt # 但lib.txt除外
/temp # 仅忽略项目目录下的TODO文件,不包括其他目录temp
build/ # 忽略build/目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt但部包括doc/server/arch.txt
7. IDEA集成Git操作
操作步骤:
idea中也有自带git。
- 打开idea,在idea中找到并打开vsm项目,就是打开了git。(可能是VSM也可能是VCS中的Create Git Repository)
- 然后把从远程仓库中的代码复制到项目上。
- 让git自己去远程仓库上下载。
- 下载好后,文件的颜色分类,红色就是没有添加到git中的,蓝色就是修改过的文件,绿色就是添加到git项目的文件。
- 在分支上也有颜色区分,此时位置显示的颜色是黄色就是head头部,移动鼠标高亮有显示的。
- 接下来推送项目到远程仓库三大步:
- add添加为git项目。git add .添加所有文件
- commit提交到本地暂存区。
- push推送到远程仓库。
- pull下拉。用于从远程仓库中获取最新的提交,并将其合并到当前分支中。
注意点:
我们需要创建自己的一个本地仓库。
8. idea中git的使用
8.1 代码生成器
步骤:
- 打开项目,找到代码生成器,导入自己创建好的数据库表,设置生成为什么样的类型,最后提交,生成代码。解压缩文件,sql文件执行好后,找到生成的代码文件,复制粘贴到项目中。(sql文件可以放到navicat中执行,解压后的文件就直接复制到项目中,它会自动复制到每个包下。)
8.2 使用git在idea中的操作
选中当前分支找到git,右键Checkout,当前的push就会提交到Checkout操作后的分支了。
Merge:合并分支。
push推送到远程仓库。
8.3 操作版本Reset和Revert
Reset:去到后一个新的版本。是回到之前的版本。第一个和第二个选项都可以使用,第三个选项会导致所有的代码都没有了。
Revert:回到之前的版本。
8.4 强制提交到远程命令行
idea中操作,把本地的分支强制提交到远程。
在新建仓库时,如果在Gitee平台仓库上已经存在readme或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果你舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):
bash
$ git push origin master -f
如果你选择保留线上的readme文件,则需要先执行:
bash
$ git pull origin master
8.5 查看当前提交的分支内容
- Gitee中查看提交的分支内容:
- 分支回退上一个版本:
- 查看远程分支:
8.6 回退到上一个版本后悔后再去到当前版本
有时候在回退到上一个版本的时候,当前版本的代码会消失,但是我又想回到当前版本该怎么操作:
回退到之前的版本的时候发现当前版本的代码消失了,我想找回来。
我可以通过时间回溯找回代码。
- 在使用Reset的时候参考:(Reset:去到后一个新的版本。是回到之前的版本。第一个和第二个选项都可以使用,第三个选项会导致所有的代码都没有了)
8.7 分支操作的意义
- 在项目开发的时候,每个人都会开发自己的模块,但是在开发的时候同时也不能影响别人的开发,所以有了Git分支。
分支展示:
Gitee中展示分支提交的区别:
8.8 分支融合
- 项目在开发完成后,都可以提交代码了,这时候可以将子分支都融合到主分支中。让主分支也可以看到子分支提交的代码。
融合分支,让Gitee中的master分支看到其他分支提交的代码:
- 切换成主分支:
- 将dev-li分支合并到master分支中。(注意:这里是将子分支融合到主分支,并不能将主分支合并到子分支中!)
- 分支同步到master主分支。
- 同步到远程。
- 同步成功。
- 所有分支。
8.9 把远程分支跟新到本地(更新git项目)
8.10 取最新git代码
9. Git分支
什么是分支呢,分支在实际中又有什么用呢?
git分支可以认为就是当前工作目录中代码的一份副本,在使用分支时,可以让我们从开发主线上分离出来,以免我们在开发时影响到开发主线。
在实践中我们如果准备开发一个新功能,但是需要两周才能完成,第一周我们写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能正常工作。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
在拥有分支后,就不要担心了,你创建了一个属于你自己的分支,别人看不到,还进行在原来的分支上正常工作,而你在自己的分支上工作,想提交就提交,知道开发完毕后,在一次性合并到原来的分支上,这样就即安全又不影响别人工作。
原理图:
- idea可视化简单操作git分支:
- 切换到主分支:
- 创建分支:
- 合并分支:
- push推送到远程仓库:
git分支中常用的指令:
bash
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换带该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -0d [branch-name]
# 删除远程分支
$ git push roigin --delete [branch-name]
$ git branch -dr [remote/branch]
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突后重新提交。选择要保留他的代码还是你的代码。
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作。工作一般情况下在新建的dev分支上工作,工作完后,比如要上发布,或者dev分支代码稳定后可以合并到主分支master上来。
10. Giee中的文件介绍
10.1 README.md文件
idea中定义:
gitee中查看: