官网下载地址:https://git-scm.com/downloads
后面默认下一步一直到安装
验证是否安装成功:
鼠标右击桌面能出现下面两个选项
在 Git Bash 中输入命令 git --version
可以查看到 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 邮箱
不管是 Windows 安装还是 Linux 安装,安装好之后,我们都需要先配置一下用户签名。
用户签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
如果不配置以后每次提交的时候都会让你输入用户名和密码。
配置完成后在系统的用户文件夹中会产生一个 .gitconfig
文件,打开就可以看到刚刚设置的信息
初始化本地仓库的方式有两种:
- 直接从远程仓库克隆
- 通过命令
git init
从本地目录进行初始化这里演示第二种
进入本地一个需要被用来作为仓库的文件夹,右击访问 Git Bash,之后输入命令 git init
就可以创建一个本地仓库
创建完成后会看到原本的文件夹中会出现一个 .git
的隐藏文件夹
通过命令
git status
来查看本地仓库的状态
如果我们在文件夹中添加一个文件,那么日志的状态就会变化
添加文件我们可以直接使用 Windows 图形化界面来添加,也可以使用 Linux 命令来添加,Linux 命令在 Git Bash 窗口中是通用的
使用命令
git add 文件名
文件添加到暂存区后,本地仓库的状态会改变
其中,提示的代码 git rm --cached
是教我们如何将暂存区的文件删除掉
删除后,本地仓库的状态又会变成未追踪到文件的状态
使用命令
git commit -m "日志信息" 文件名
(如果缓存区只有一个文件,文件名可以不加)
这时查看本地仓库的状态信息为
注意
:提交到本地仓库的数据,是没办法删除的,除非你将整个仓库都删除掉,不然的话,即便你对文件修改了,重新提交,其他人还是可以通过查看、还原历史版本的方式,来查看之前提交的数据是什么样的,所以提交本地仓库这个操作要慎重进行(可不要将骂人的话提交本地仓库哦,会被人看到的)
命令:
git reflog
查看引用日志信息
引用日志信息中有提交的版本号,提交的分支和提交的信息等数据
命令:
git log
查看详细的日志信息
详细的日志信息中有完整的版本号,提交的分支,用户签名和提交的信息等数据
命令:
git log 文件名
查看某个文件的日志信息
文件修改后,也是需要对文件进行提交缓存区和提交本地仓库的操作的
文件修改后,查看状态,会提示有文件内容发生了变化,这时候需要你继续进行提交
1、查看历史版本:
查看历史版本其实就是说查看日志,我们通过 git reflog
或者 git log
两个命令来查看版本信息
2、切换版本:
命令:
git reset --hard 版本号
通过这一个命令,可以切换回之前修改过的版本
在 .git → HEAD 文件中,我们可以看到当前我们处于哪一个分支下面
在 .git → refs → heads → master 文件中,我们可以看到当前分支处于哪一个版本下
命令 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch | 查看分支 |
git branch -v | 查看分支和分支的版本 |
git checkout 分支名 | 切换分支 |
git checkout -b 分支名 | 创建并切换分支 |
git merge 分支名 | 把指定分支合并到当前分支上 |
创建了分支后,在 .git → refs → heads 文件夹中,会多出来一个分支文件
1.4.2 查看分支
git branch
只查看当前有的分支的名字,以及当前处于哪个分支下git branch -v
除了查看当前所有的分支,还可以看到各个分支的版本号以及当前处于哪一个分支下
git checkout 分支名
切换到指定分支下git checkout -b 分支名
创建指定分支,并切换到创建好的分支下
在分支上修改文件内容,不会影响到其他分支的内容,各个分支的内容各自管理,各自提交
合并分支之前,我们应该先将分支切换到主分支下,因为一般合并都是将子分支的内容合并到主分支下
合并分支时,如果主分支没有做过修改,子分支做了修改,那么在进行分支的合并的时候,会正常合并,不会出现合并冲突的情况
但是如果我们在两个分支都做了修改,这时要来进行分支合并,就会出现分支合并失败的情况
这时我们执行了分支合并操作,合并就会有问题
提示了合并出现冲突,自动合并失败,MERGING表示还在合并中
因为两边都进行了修改,所以 git 并不知道要以那边的修改为准,所以自动合并会失败,这种时候需要我们手动对代码进行修改后再提交
打开文件可以看到冲突的代码
其中 <<<<<<< HEAD 和 ======= 中间的代码表示当前分支做了修改的代码
======= 和 >>>>>>> f1 中间的代码表示 f1 分支做了修改的代码
我们需要将<<<<<<< HEAD 、======= 和 >>>>>>> f1 去掉,然后将代码改成我们需要的样子,之后保存提交。
注意,这里使用 commit 将代码提交到本地仓库时,commit 命令的后面不能加文件名
为远程库创建别名:
git remote add 别名 远程库链接
建议在为远程库指定别名的时候,别名就跟项目的名字一样,这样方便记忆,也不会导致重复
查看现有的远程库别名:
git remote -v
push表示推送,fetch表示拉取或者克隆,这意味着我们在推送或者拉取https://github.com/fjw-ysw/mygit01.git
这个项目的时候,都可以使用 mygit01
这个别名
命令:
git push 别名/远程库链接 分支名
推送操作执行的最小单位是分支,我们在进行推送的时候一定要指定推送哪个分支的代码到远程库上
由于这个 GitHub 的服务器在国外,所以我们推送的时候可能会出现网络影响导致失败的情况,多推几次即可
正常推送会弹出需要你登陆的一个界面,我们选择使用浏览器的账号来登录即可。这一步也可能会因为网络原因登录失败,如果失败就只能重新推送
浏览器会弹出提示,需要你授权,如果你长时间没有输入密码登录,在点击授权后,可能还需要你输入密码验证一下
推送成功就可以看到以下提示,GitHub 中也会有自己的项目代码出来
命令:
git pull 别名/远程库链接 分支名
如果你在远程库中对代码文件进行了修改,这会导致在来本地库查看时,内容和远程库不一致,这时候我们就需要使用到拉取功能
同样的,在拉取时,我们也要指定拉取哪一个分支中的代码。且拉取也是会受网络因素影响失败的
命令:
git clone 远程库链接
如果你需要克隆其他项目到本地,就可以使用上面的命令
假设我们需要克隆项目到 D:\TestFile\git-test
目录,那么我们就需要在这个目录中进入 git bash
,之后执行上面的命令
克隆操作会自动帮我们做三件事情:
- 拉取代码
- 初始化本地仓库
- 创建别名(只会创建默认的别名origin)
在远程仓库的项目中,我们除了可以通过 HTTPS 链接来推送、拉取和克隆项目外,我们还可以使用 SSH 链接来做这些操作,不过 SSH 需要添加 KEY 公钥后才可以使用
SSH密钥的生成:
进入计算机的用户目录中,在打开 Git Bash
命令:
ssh-keygen -t rsa -C XXX
其中,常见的命令选项如下
-t 用于指明密钥加密的算法,rsa 是一种著名的非对称加密协议
-C 表示描述,后面跟着描述的内容,我这里用邮箱来作为描述
具体的命令选项可以参考下图
执行命令后会出现一些要你操作的步骤,我们直接回车就可以了(三次)
出现如下画面表示成功
生成成功后就会在当前目录下生成一个 .ssh 的目录,点击进去可以查看公钥和私钥
这时我们可以将公钥的内容复制,到 GitHub 中配置使用
这样就添加成功了
配置了 SSH 公钥后,我们后续进行数据的推送、拉取和克隆时,只要是使用 SSH 链接来操作的,就都不需要提示登录验证了
Gitee 的操作和 GitHub 的是类似的,都是一样的命令和配置方式
在我们使用 IDEA 来进行项目开发的时候,会生成很多的配置文件,例如 .idea 文件夹中的文件还有 .iml 文件
这些文件与项目的实际功能是无关的,不参与服务器的部署运行
因此在使用 Git 管理项目的时候,这些配置文件我们是不需要管理的,所以我们要配置一个忽略文件,来忽略这些配置文件
配置方式:
xxx.ignore
文件(前缀的名称随便起,建议是 git.ignore
).gitconfig
文件中引用忽略文件git.ignore
文件模板内容
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (
.mtj.
# 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
.gitconfig
引用忽略文件语法
[core]
excludesfile = C:/Users/15517/git.ignore
在 IDEA 中配置完成 Git 后,我们还是不能使用 Git 来管理项目,这是因为这一个项目还未进行本地仓库的初始化
我们需要在 idea 中初始化本地仓库先,操作如下
初始化仓库后,在项目目录中我们就可以看到 .git 文件夹了
且 idea 项目右击可以看到有一个 Git 操作的选项
在我们初始化仓库后,会发现 Main.java 文件变成了红色,这表明这一个 java 文件目前还处在工作区,还未添加到暂存区,下面我们演示怎么将代码添加到暂存区
方式一:
右击需要添加到暂存区的文件,选择 Git → add,就可以将文件添加至暂存区
方式二:
选中整个项目,右击选择 Git → add,进行添加暂存区
方式三:
新建文件的时候,idea 会提示是否添加暂存区,我们可以直接添加暂存区
文件添加后,文件的颜色会变为绿色
提交暂存区的文件到本地仓库,也是通过一样的方法:Git → Commit Directory…
当我们文件进行了修改后,文件的颜色会变成蓝色,蓝色代表这个文件之前追踪提交过,现在发生了改变,这时候我们需要在进行一次添加和添加(在 idea 中,发生了修改后也可以不用添加暂存区,直接提交也可以,不过要注意,提交的代码就无法删除了,切换版本都可以查看到)
查看版本情况
切换版本:选中要切换的版本,右击选择 Checkout Revision 即可切换版本
创建分支
方式一:右击项目创建
方式二:在查看日志的地方创建
切换分支
看自己当前处于哪一个分支,就看日志界面的右下角的分支名
正常合并
如果只有一个分支对代码进行了修改,那么合并分支不会造成冲突,可以正常合并
切换至主分支执行合并操作即可
冲突合并
如果存在多个分支对同一份代码进行了修改,在合并分支时就会出现冲突
像上述的情况,合并分支时就会出现分支的冲突
IDEA 对产生冲突的代码都有做出标记,我们需要决定保留哪些代码,将产生了冲突,需要保留的代码移动至中间提交就可以保留下来,不需要的就点击 × 删除掉
进行处理后,点击 Apply 即可合并分支,日志状态也会发生变化,分叉的两条路线合并在一起
使用账号连接 GitHub
这样便是连接上了 GitHub 了,使用这种方式连接 GitHub 需要看网络的情况,前几次很大概率是连接失败的,需要多试几次
使用口令连接 GitHub
使用口令连接 GitHub,我们就需要先去 GitHub 中生成一个口令
口令生成后需要尽快复制下来,因为口令只会显示一次,页面刷新后就不再显示了
我们本地的代码做了修改,提交了本地库后,远程库的代码还是不会变化的,我们需要保证本地库和远程库的代码统一,需要使用到代码推送功能
注:
本地库进行了代码提交后(commit操作),才可以执行代码推送
方式一:
方式二:
方式三:
点击后会弹出以下框框
使用 https 链接来连接 GitHub 可能会因为网路原因失败,我们可以配置 ssh 链接来连接 GitHub
推送完成后,GitHub 上也会有本地修改过的代码
!!!注意!!!
push 操作是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!
因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
如果远程库的代码有变化,我们需要同步远程库和本地库的代码数据,就需要使用到代码的拉取
方式一:
方式二:
点击之后选择好你要使用的连接方式以及分支,点击 Pull 即可拉取代码
安装 Gitee 插件
在我们使用 GitHub 时是不需要安装 GitHub 插件的,这是因为 IDEA 自带了这个插件
而我们使用 Gitee 时,就需要先安装这个插件,我们才可以使用 Gitee
之后的操作就和 GitHub 一样,我们需要先连接上 Gitee 账号
初始化仓库后,分享项目到 Gitee