IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git笔记 概述,安装,常用命令,分支操作,IDEA集成Git -> 正文阅读

[开发工具]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,手动合并

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:10:55  更:2022-07-04 23:12:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 15:56:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码