Git笔记 概述,安装,常用命令,分支操作,IDEA集成Git

Git概述

        Git是一个免费的,开源的分布式版本控制系统,可以快速高效地从小型到大型地各种项目。

        Git易于学习,占地面积小,性能极快,它具有廉价的本地库,方便的缓存区域个多个工作流分支等特性。其性能优于Subversion,CVS,Perforce和ClearCase等版本控制工具

何为版本控制

        版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统

        版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

为什么需要版本控制

        个人开发过渡到团队协作,对代码的修改可能会把另一人对代码的修改给覆盖掉,所以需要git来实现版本控制

版本控制工具

集中式版本控制工具

CVS,SVN(Subversion),VSS......

        集中化的版本控制系统诸如CVS,SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新,多年来,这已成为版本控制系统的标准做法。

        这种做法带来了许多好处,每个人都可以在一定程度上看到项目中其他人正在做些什么。而管理员可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

        事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。


分布式版本控制工具

Git,Mercurial,Bazaar,Darcs......

        像Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整的镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现以后,解决了集中式版本控制系统的缺陷

1、服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

2、每个客户端保存的都是完整项目(包含历史记录,更加安全)

每个客户端更新项目版本,都会把代码推送到远程库中。客户端在编写代码前要连接远程库,将最新的代码克隆到本地库。基于自己的本地库来做版本的控制。写好新的版本之后还要将代码推送到远程库,保证代码是最新的。

Git简史

Git工作机制

工作区:存放代码的位置;将工作区的代码添加到暂存区。此时的代码是可以删除的,还没有生成对应的历史版本。暂存区代码提交到本地库,生成对应的历史版本(删不掉了,除非删库跑路)。生成历史版本后,从本地库将代码推送到远程库(push)。

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单成为远程库。

局域网:GitLab

互联网:GitHub(外网),Gitee码云(国内网站)

Git安装

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

点击DownLoad for Windows

选择相应版本即可,打不开就查看网页源代码,复制下载链接到迅雷

下载完成,打开

选择安装位置,路径最好非中文,没有空格

后面一路next,最后install,finish即可

桌面右键

安装成功

点击Git Bash Here,查看当前版本

Git常用命令

 

设置用户签名

签名的作用是区分不同操作者身份。用户的签名在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置以下用户签名,否则无法提交代码。

注意:这里设置的用户签名和将来登录GitHub的账号没有任何关系

可以在当前电脑用户下找到.gitconfig查看

初始化本地库

比如你的项目代码如下,你要用git去管理它

首先进入到项目目录中,右键Git Bash Here

输入命令

此时就在项目目录下生成了空的git库,.git文件默认隐藏,需要设置查看

或者在命令行使用命令: ll -a 查看

查看本地库状态

所在分支,是否提交过,未被追踪的文件(只存在于工作区),使用git add命令添加到暂存区

添加暂存区

自动转换行末换行符

再次查看本地库状态

此时这个文件就在缓存区了 ,使用提示命令将它从暂存区删除

提交本地库

将暂存区文件提交到本地库

git commit -m "日志信息" 文件名

提示帮我们转换了行末换行符,主干分支首次提交,一个文件被改变,3行内容被插入

方括号里的7位字符就是版本号的前七位

查看版本信息

详细信息

修改文件

修改hello.txt

查看本地库状态

红色表示当前修改还没有被添加到暂存区

添加进暂存区 

提交本地库

历史版本

查看版本信息

详细信息


版本穿梭

git reset --hard 版本号

查看当前的版本

切换到第一次提交的版本

此时工作区中内容也会改变

查看版本信息

可以在.git/refs/heads/master中查看当前master分支版本号

Git切换版本,底层其实是移动的HEAD指针

Git分支操作

什么是分支

        在版本控制中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

分支的好处

同时并行推进多个功能开发,提高开发效率

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的操作

查看分支


创建分支

查看分支


切换分支

修改hello.txt,保存

将其添加暂存区,提交本地库


合并分支

先切换回master分支

将hot-fix合并到当前分支


冲突合并

冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个,必须人为决定新代码内容。

先在master分支修改hello.txt,并添加暂存区,提交本地库

切换分支,修改同一位置,添加暂存区,提交本地库

切换回master分支,合并hot-fix分支,合并分支冲突

 

查看状态

手动合并,打开hello.txt

手动删除到自己想要的状态

将修改后的hello.txt,添加暂存区

提交本地库(注意不要加文件名)

合并成功

Git团队协作机制

团队内协助

跨团队协作

IDEA集成Git

配置Git忽略文件

为什么要忽略它们呢?

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

怎么忽略?

创建忽略文件xxxx.ignore(建议时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

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

在用户家目录(C:/用户/xxx)下新建文本文档,将模板复制进去,改下扩展名

在.gitconfig文件中引用忽略配置文件

在IDEA中定位Git程序

选择自己的git.exe安装目录,test显示正确版本号即可

初始化&添加&提交

创建Git本地库

此时可以看到没有被忽略的文件变红了,说明它没有被添加到暂存区。

右键将其添加

变绿说明加入到了暂存区,但还没有提交到本地库

右键将其提交

填写Commit Message提交即可

 此时文件颜色正常了,就是成功了

切换版本

先对已提交代码进行修改

发现它变蓝了,说明这个文件被追踪过,但被修改了

将他进行添加暂存区,提交本地库(可以看到和上次提交代码的差别),又恢复正常颜色了

追踪过的文件可以直接提交本地库

查看版本信息

点击想要切换的版本,右键checkout revision

此时代码也切换到了对应的版本

创建分支&切换分支

 

输入要创建的分支的名字,并选择创建后切换分支

右下角显示当前所处分支

如何切换回来,点击它即可

合并分支

切换回hot-fix分支,修改代码,提交本地库

再切换回master分支,将hot-fix合并到master分支

合并冲突的情况

切换回hot-fix分支,修改代码,提交本地库

再切换回master分支,修改同一个位置的代码,并提交本地库

再次合并,产生冲突

点击merge,手动合并

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值