Git是什么
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 [1] Git 是 [Linus Torvalds](https://baike.baidu.com/item/Linus Torvalds/9336769) 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
为什么要用Git
当我们在企业中开发程序时,往往不是一个人而是一个团队共同协作。我们需要有一个工具来将各个不同成员所开发的代码做一个共享和同步。这是第一个原因。另外,当我们不小心将代码误删除、或者我们自己电脑故障无法打开时,需要有一个地方来备份我们的代码,以便很方便的恢复。上述的几种场景Git都可以很轻松的解决。
什么场景下要用Git
团队中多人协作开发、跨国多地协作开发项目时。
如何使用Git
Git下载、安装
官方下载地址: https://git-scm.com/download/win
Git的工作区、暂存区、本地仓库、远程仓库
- 工作区
就是我们在电脑里能看到的目录,我们平常直接编写的代码就在工作区。
- ** 暂存区**
英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 本地仓库
工作区有一个隐藏目录.git,这个目录就是Git的版本库。
本地仓库用来存储代码历次修改信息的仓库。类似于SVN的远程仓库。里面存储了代码提交内容,提交人,提交备注,代码分支信息。
-
远程仓库
-
公司内部搭建的远程仓库
-
Github、Gitee
-
工作区、暂存区、本地仓库之间的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rp4oENHj-1571359892753)(git_01.jpg)]
图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage, index),标记为 “master” 的是 master 分支所代表的目录树。
图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
当执行 “git reset HEAD” 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
当执行 "git rm --cached " 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 “git checkout .” 或者 "git checkout – " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
当执行 “git checkout HEAD .” 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
Git命令行的使用
- git init: 初始化git本地仓库
- git status: 查看当前分支状态
- git add: 将修改添加到工作区(暂存区)
- git commit: 将修改提交到本地仓库
- git log: 查看历次提交记录
- git remote: 操作远程仓库
Git第三方客户端使用
安装完git以后,官方其实自带了两个客户端,一个是纯命令行的Git Bash.exe另一个是图形界面工具Git GUI.exe,只不过官方自带的图形界面工具使用并不友好。我们常用的第三方客户端工具
- TortoiseGit
- IDEA
- Eclipse
在IDE中使用
我们常用的eclipse和IDEA集成开发环境已经默认都集成maven插件, 在平常的开发工程中,我们可以通过IDE很方便的随时完成代码提交。配置过程比较简单,这里不再赘述。