Git

1、什么是Git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git是Linus Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件

官网:https://git-scm.com


2、git安装及基本使用

Git - Downloads

下载后,一路下一步安装即可(可以改变安装路径)

全局配置:

配置用户名:git config --global user.name "zhangsan"

配置邮件: git config --global user.email "[email protected]"

查看配置信息

git config -l list

查看git的版本信息

git version


3、git的相关概念及工作原理

工作区:需要git来管理的文件夹---可以是一个文件夹,也可以是项目的根目录

暂存区:把工作区的修改后的文档  通过 add 操作,提交到暂存区

分支:  存放 暂存区里通过  commit 操作提交过来的文档

仓库:  工作区+暂存区+分支

本地仓库:在自己的电脑中,供自己使用

远程仓库:团队成员共同使用

远程仓库的内容必须下载到本地仓库,文件必须从本地仓库才能提交到远程仓库

原理图:

Git_第1张图片


4、本地仓库操作

1、新建本地仓库

git init

进入某个文件夹内部:在地址栏输入cmd 回车 输入命令 git init 回车

当前文件夹就被初始化为仓库 ,称为工作区 里面多了隐藏文件.git

工作区不包含.git文件

暂存区及分支在.git中

2、查看仓库的状态

查看文件是否添加到了暂存区,是否提交到了分支

输入命令:git status

执行后,如果文件的颜色是红色,说明红色名字的文件没有从工作区,add到暂存区里

Git_第2张图片

3、把文件从工作区添加到暂存区

git add . 添加全部文件

git add java.txt 添加某个文件

Git_第3张图片

 4、把暂存区的文件,提交到分支中

git commit -m "注释内容"

Git_第4张图片


5、远程仓库

 Git_第5张图片

gitee.com

先注册账号、然后登录

创建仓库

创建仓库后会有如下地址:https://gitee.com/zhang_san/java2105.git


6、远程仓库的操作

一、上传到远程仓库 push

1、 把本地仓库和远程仓库关联,关联和本地仓库和远程仓库之间就可以进行clone、pushu、pull操作

进入到本地仓库中

git remote add origin https://gitee.com/zhang_san/java2105.git

origin:是关联的远程仓库的一个简化名字

2、可以查看远程仓库地址

git remote -v

3、把本地仓库 中已经提交到分支中的文件 推送到远程仓库里

git push origin master

默认提交到originf对应的远程仓库的名字叫做master的分支里

Git_第6张图片

二、克隆 clone

当第一次从远程仓库下载代码及文件时使用,克隆操作会在拉取文件的同时,把当前文件夹初始化为本地仓库

git clone https://gitee.com/zhang_san/java2105.git

三、拉取文件

git pull origin master

Git_第7张图片


7、分支

分支:就是版本文件最终存放的位置

无论是本地仓库还是远程仓库,都默认使用的是master的分支

在企业中往往使用master分支存放已经确定(测试通过,无需修改)的文件

还未最终确定的代码往往使用新建的其他分支

操作:

1、查看分支

git branch

【说明】默认只有一个名字为master的分支

使用哪个分支,哪个分支的颜色为绿色

2、创建分支

git branch 分支名字

3、切换分支

git checkout 分支名


8、分支的使用

1、默认使用主分支,把主分支的内容提交到远程服务器 hello

2、切换分支,修改文件,本地仓库提交 进行两次

dev1 和master分支 的内容是一致的

hello

zhangsan 提交一次

lisi 提交第二次

3、切换到 master分支

hello

yinzuen 提交一次

4、两个分支进行合并

在master进行合并 ,合并dev1分支

合并会产生冲突

Git_第8张图片

【注意】在解决冲突后,记住要删除 <<<

5、重新 add 及commit

【强调】当前在哪个分支中,会把其他分支合并到当前分支,并没有把当前分支的内容合并到其他分支


9、idea整合git

1、把idea和Git进行关联----bin目录下的git.exe

Git_第9张图片

2、在项目的根目录下创建一个.gitignore文件

这个文件里的内容,不会提交到仓库里,会被忽略掉

3、创建本地仓库

当前项目所在的根目录就是仓库

Git_第10张图片

4、把工作区的红色文件 add到本地仓库的暂存区里

Git_第11张图片

添加后,文件编程绿色的  

Git_第12张图片

5、把暂存区的文件提交到commit到分支中  

默认的是master分支

Git_第13张图片

弹出窗口如下:

Git_第14张图片

本地仓库操作结束

把本地仓库的代码通过idea 上传到远程仓库

创建了远程仓库:仓库的名字要和项目名一致

https://gitee.com/zhang_san/mavenpro2.git  

6、上传到远程仓库

Git_第15张图片

弹出窗口如下:

Git_第16张图片

弹出窗口如下:

Git_第17张图片

单击 OK 后 又弹出登录窗口

Git_第18张图片

单击 Log In 按钮 ,进行登录

在弹出的窗口中,单击 push 按钮即可

就把本地的内容提交到了远程服务器上

7、clone操作

当第一次从远程服务器上获取代码时,需要克隆clone操作

1、打开idea

2、进行如下操作

Git_第19张图片

弹出窗口如下:

Git_第20张图片

【说明】克隆的位置必须是一个空的文件夹,名字最好和远程仓库名相同

单击 Clone 按钮后, 则进行文件的下载,下载后弹窗如下:

Git_第21张图片

单击Yes 打开下载的代码

8、日常工作中,如果本地新建了代码文件,测试好没有问题后

先本地仓库 add commit

然后远程仓库 push 菜单如下:

Git_第22张图片

在弹出的窗口中

Git_第23张图片

本地的文件就上传到了服务器


9、每天早晨上班打开电脑后,通常会到远程服务器下拉取最新代码  

Git_第24张图片

拉取了服务器的最新代码  


 10、冲突

两个人修改了同一个文件,先push的人没有问题,后push的就会提示冲突

Emp.java

张三:修改了, 修改后 先add commit 再push 没问题

我:增了一个属性 当我进行push操作时

git检测:目前服务器上push的文件和我pull文件已经发生变化,说明别人改动,发生冲突

出现如下窗口:

Git_第25张图片

通过合并解决冲突,单击Merge按钮 ,弹出窗口如下:

Git_第26张图片

单击 Merge 按钮 后,弹窗如下:

Git_第27张图片

然后重新push

Git_第28张图片


11、常见问题 

1、远程服务器的账号修改了密码,那么本地还按原来的密码进行连接,肯定连接不上

Git_第29张图片

2、如何避免冲突  

在修改文件之前,先pull最新的文件,有效避免掉部分冲突


12、提交回滚

1、本地未commit

变更文件

代码Pull下来之后 在此基础上进行修改,想回到最初的拉下来状态,

Git_第30张图片

要是发现代码需要想反回滚

 通过Show History 就可以找到了

Git_第31张图片

 

新增文件

直接delete删除

2、commit但是未push

仅限于当前这一个git进行回滚

最后一次git的时候 使用Undo Commit(仅限于最后一次git来使用) 

Git_第32张图片

drop Commit (任意一条git都可以使用 不会在git上留下新的抹除代码的记录) 使用最多

Git_第33张图片

 点击之后点击右下角的undo 就会再次出现

revert Commit(任意一条git都可以使用 但会在git上留下新的抹除代码的记录)

Git_第34张图片

drop Commit 和 revert Commit 的区别就是一个回滚代码不会留下记录 一个会留下记录

【注意】一般不建议将中间的记录进行回滚因为会产生Merge的情况,这种合并情况的后果可能导致项目无法运行

如果回滚出现Merge的情况想终止 先点击close 但是并没有结束

 点击三角形感叹号

Git_第35张图片

 点击Abort Rebase 才是结束

从当前一直到后面的所有记录全部回滚掉

soft

在选定提交之后所做的所有更改都在缓存区commit的内容都会保留,其新增文件+文件变更都在缓存区 

mixed

在选定提交之后所做的更改将被保留,但不会暂存以进行提交,commit的内容都会保留,新增文件在工作区,文件变更在暂存区

hard

在选定提交之后所做的所有更改都将被丢弃(暂存和已提交) commit的内容 + 暂存区的内容全部被丢弃

keep

在选定提交之后的已commit内容将被丢弃,但未commit的部分将保留 commit部分内容被丢弃,未commit部分保留

Git_第36张图片

Git_第37张图片

3、commit并且push

Git一般都是保护远程分支的,所以我们需要reset + force push

Git_第38张图片

Git_第39张图片

Git_第40张图片

直接强推 然后再正常的提代码

你可能感兴趣的:(java,java)