| |
|
开发:
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文件引用,建议也放在用户家目录下。 模板如下
在用户家目录(C:/用户/xxx)下新建文本文档,将模板复制进去,改下扩展名 在.gitconfig文件中引用忽略配置文件 在IDEA中定位Git程序选择自己的git.exe安装目录,test显示正确版本号即可 初始化&添加&提交创建Git本地库 此时可以看到没有被忽略的文件变红了,说明它没有被添加到暂存区。 右键将其添加 变绿说明加入到了暂存区,但还没有提交到本地库 右键将其提交 填写Commit Message提交即可 ?此时文件颜色正常了,就是成功了 切换版本先对已提交代码进行修改 发现它变蓝了,说明这个文件被追踪过,但被修改了 将他进行添加暂存区,提交本地库(可以看到和上次提交代码的差别),又恢复正常颜色了 追踪过的文件可以直接提交本地库 查看版本信息 点击想要切换的版本,右键checkout revision 此时代码也切换到了对应的版本 创建分支&切换分支? 输入要创建的分支的名字,并选择创建后切换分支 右下角显示当前所处分支 如何切换回来,点击它即可 合并分支切换回hot-fix分支,修改代码,提交本地库 再切换回master分支,将hot-fix合并到master分支 合并冲突的情况 切换回hot-fix分支,修改代码,提交本地库 再切换回master分支,修改同一个位置的代码,并提交本地库 再次合并,产生冲突 点击merge,手动合并 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 0:36:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |