介绍
Git优势
- 大部分操作在本地完成不需要连网;
Git是分布式的管理工具,本地就有一个仓库并保存了完整的版本历史,大部分操作在本地就可以完成,这是传统的集中式管理工具无法做的;
- 完整性保存
Git会对每一次保存的数据进行Hash算法并将Hash值保存,只要文件不变Hash值就不变,因此操作文件时只要对Hash值进行对比就可以判断文件是否变化,防止数据传输过程中的损坏,很好的保存了文件的完整性;
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅:随后将详细展开
- 与Linux命令全面兼容
Git和代码托管中心
谈论Git时避免不了经常要提到GitHub,GitHub就是一个代码托管中心;Git在本地有一个本地仓库,相对于本地库 代码托管中心是一个远程代码库;常见的代码托管中心有:Gitlab、GitHub和码云;在局域网中可以通过Gitlab搭建自己的代码托管中心,在外网环境中可以通过GitHub或者码云搭建托管中心;
Git命令行操作
设置签名
- 签名的形式:
姓名:xyz
邮箱:xyz@qq.com
注意点:签名仅仅是作为不同成员的身份标识,它和登录远程仓库的账号、密码没有任何关系
- 签名的作用:区分出项目组中不同成员的不同身份
- 签名级别:
1.项目/仓库级别:仅在当前本地仓库范围内有效
2.系统用户级别:登录当前操作系统的用户范围
- 签名优先等级
1.项目级别优先于系统用户级别,二者同时存在时采用项目级别;
2.如果只有系统用户级别,以系统用户级别的签名为准;
3.二者都没有,操作仓库时Git会报错;
-
设置项目级别签名
命令:
git config user.name xxx
git config user.email xxx@qq.com
设置的签名存放在.config文件中,可以通过"cat .config"命令查看已设置的项目级别的签名,如下:
-
设置系统用户级别签名
命令:
git config --global user.name xxx
git config --global user.email xxx@qq.com
与项目级别签名存放的位置不同,系统级别的签名存放在根目录下的.gitconfig文件中,可以通过"cat ~/.gitconfig"命令查看已设置的系统级别的签名,如下:
显示历史记录
- git log: 查看历史版本,提交信息;
- git log --pretty=oneline (git log --oneline): 一行显示历史记录;
- git reflog: HEAD@{数字} --> 数字表示要回滚到相应版本所需要的步数;
版本控制、删除文件找回
- git reset --hard <索引值>:将版本切换到索引值对应的版本,可前进、后退;
reset 三个参数对比:
--soft:仅仅是在本地库移动指针;
--mixed:会在本地库移动指针,重置缓存区;
-- hard :在本地库移动指针,重置缓存区,重置工作区;
文件比较
- git diff :和缓存区中的文件进行对比,显示所有改变的文件;
- git diff <文件名>: 只显示当文件与缓存区文件进行比较的变化;
- git diff <指针位置> <文件名> :和历史记录中的某个版本进行比较;
分支操作
- git branch <branch name>:拉取分支branch name;
- git checkout <branch name>:切换分支branch name;
- 合并分支:
①切换到接受合并的分支:git branch <branch name>;
②将被合并的分支merge到当前分支:git merge <branch name>;