Git基础学习
Git基础学习
版本控制
- 什么是版本控制:指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理。
作用:实现跨区域多人协同开发;追踪和记载一个或多个文件的历史记录;统计工作量;跟踪记录整个开发过程;减轻开发人员负担,降低人为错误。 - 版本控制分类
1)本地版本控制:记录文件每次更新,可以对每个版本做一个快照,适合个人用。
2)集中版本控制:所有版本数据都保存在服务器上。我们工作时候,必须连接*代码服务器并获取最新版本代码,进行编写或者更改代码并检查完毕后,推送到*代码服务器。该版本控制系统受网络限制比较大,服务器损坏,数据都会丢失。
常见的工具:CVS(Concurrent Versions Control System),SVN(Subversion),VSS(Visual So urce Safe)。
3)分布式版本控制:所有的版本信息仓库全部同步到本地的每个用户,即每个人拥有全部代码。可以在本地查看所有版本历史,也可以离线提交,只需在连网时push到相应服务器或其它用户那里。
最常用工具:Git。 - Git与SVN的区别:
1)最主要区别:Git是分布式版本控制,没有*服务器,每个人的电脑就是一个完整的版本库。SVN是集中式版本控制系统,版本库集中放在*服务器上,每次使用,首先要从*服务器得到最新版本。
2)Git把内容按元数据方式存储,而SVN是按文件存储。
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因 为.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
3)Git分支和SVN的分支不同:SVN会发生分支遗漏的情况,而Git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些分支。
4)GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
5)Git的内容完整性要优于SVN:Git的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
Git - Git的历史
- Git常用配置命令
1)查看全部配置:git config -l
2)查看系统配置:git config --system --list
3)查看用户自己的配置:git config --global --list
4)配置用户名 git config --global user.name “username” //( "username"是自己的账户名)
5) 配置邮箱 git config --global user.email “[email protected]” (用户名和邮箱都是下载git后必须配置的) - Git基本理论
git本地有三个工作区:工作区(workspace)、暂存区(index/stage)、本地仓库(local repository)。还有远程的git仓库(Remote repository)。
1)Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
2)WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
3).git:存放Git管理信息的目录,初始化仓库的时候自动创建。(这是个隐藏文件)
4)Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
5)Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
6)Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
工作流程:
1)在工作目录中添加、修改文件;
2)将需要进行版本管理的文件放入暂存区域;
3)将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)。
- git操作指令
1)在当前目录新建一个Git代码库:$ git init
2)新建一个目录,将其初始化为代码库:$ git init [project-name]
3)克隆远程项目和整个代码历史: g i t c l o n e [ u r l ] 4 ) 查 看 文 件 状 态 : git clone [url] 4)查看文件状态: gitclone[url]4)查看文件状态:git status
5)添加所有文件到暂存区: g i t a d d . 6 ) 同 步 到 远 程 仓 库 : git add . 6)同步到远程仓库: gitadd.6)同步到远程仓库:git push
7)提交暂存区的文件到本地仓库:$ git commit -m ”消息内容“
8)列出所有本地分支: g i t b r a n c h 9 ) 列 出 所 有 远 程 分 支 : git branch 9)列出所有远程分支: gitbranch9)列出所有远程分支:git branch -r
10) 新建分支,但依然停留在当前分支: g i t b r a n c h [ b r a n c h − n a m e ] 11 ) 新 建 分 支 , 并 切 换 到 该 分 支 : g i t c h e c k o u t − b [ b r a n c h ] 12 ) 合 并 指 定 分 支 到 当 前 分 支 : git branch [branch-name] 11)新建分支,并切换到该分支:git checkout -b [branch] 12)合并指定分支到当前分支: gitbranch[branch−name]11)新建分支,并切换到该分支:gitcheckout−b[branch]12)合并指定分支到当前分支:git merge [branch]
13) 删除分支: g i t b r a n c h − d [ b r a n c h − n a m e ] 14 ) 分 支 切 换 : git branch -d [branch-name] 14)分支切换: gitbranch−d[branch−name]14)分支切换:git checkout [branck-name] - .gitgnore文件:我们做的每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。
- git与远程仓库的传输是通过ssh**验证是否本人上传。在git bash用 $ ssh-****** -t rsa 生成公钥,按三次回车即可。然后将用户目录下.ssh文件下的id_rsa.pub中的内容复制到远程账户的设置中如码云账号。
- git分支:
所谓branch,就类似于树的枝干,有一个主干,在Git里成为master,意思也很好理解;这个是必须存在的,然后你可以分出去其他的树干(但是都不是主干)。像树的分枝都会回到主干那里一样,Git里的分支也会汇聚到master那里。一般协同开发需要创建分支,不同功能由不同开发人员在不同分支上开发运行,然后由资深开发者合并到主干master中。
git的基础学习就到这,大家可以去哔哩哔哩或者其他学习网站进一步学习Git与IDEA,Eclipse整合使用。