git常用的命令
1、团队内部协作的方式
1.1、程序员A:将自己写的代码上传到代码托管中心。
使用命令:
git push [地址] [分支名]
再将程序员B上传的代码块拉取到本地:
git pull [项目地址]
1.2、程序员B:拉取程序员A上传的代码到本地。
使用命令:
git clone
再将自己写的代码上传到托管中心
git push
2、本地库操作
2.1、本地库初始化
命令:
git init
效果: 注意:.git目录中存放的是本地库相关的子目录和配置文件,不能删除和修改配置。
2.2、设置签名(本地设置)
形式:区分不同开发人员的身份 用户名:bugdr email地址:xxxxxxx@gmail.com 辨析:这里设置的签名和代码托管中心与本地的是没有联系的 命令: 1. 项目级别/仓库级别:只在当前的本地库范围内有效 - git git config user.name bugdr_pro git config user.email xxxxxxx@gmail.com
查看签名: 系统用户级别:在操作系统的目录中有效 - ```git git config --global user.name bugdr_glb git config --global user.email xxxxxxx@gmail.com
![图片描述](https://images.sunofbeaches.com/content/2021_05_25/846790591609044992.png)
查看签名:
![图片描述](https://images.sunofbeaches.com/content/2021_05_25/846790632864219136.png)
1. 优先级:
- 就近原则:项目级别优先与系统用户级别,二者都有采用项目级别的签名
- 只有系统用户级别:就以系统用户级别的签名
- 项目级别以及系统用户级别都没有:不能进行git管理。
### 2.3、基本操作
- 查看工作区以及缓存区代码提交的状态和创建一个文件(工作区)
```git
git status
vim Good.java
```
- 添加操作(暂存区)
```git
git add Good.java
```
- 提交(提交到本地托管中心)
```git
git commit Good.java
```
- 一次性提交(不是新建立的文件)
```git
git commit -m "第二次提交" Good.java
```
- 查看历史记录
```git
git log
```
- 历史记录一行显示
```git
git log --pretty=oneline
```
- 简化显示
```git
git log --oneline
```
- 查看提交(适合版本移动的查看)
```git
git reflog
```
### 2.4、前进后退
- 基于索引值的操作(前进后退都可以)
```
git reset --hard[局部索引值]
git reset --hard c4971c2
```
- 使用^的操作:只能后退(一个^表示后退一步,n个^表示后退n部)
```git
git reset --hard HEAD^
```
- 使用~符号:只能后退(一个~表示后退一步,n个~表示后退n部)
```git
git reset --hard HEAD~
```
### 2.5、reset的三个参数的对比
- --soft
- 只在本地仓库移动HEAD指针
- 重置暂存区
- --mixed参数
- 在本地仓库移动HEAD指针
- 重置暂存区
- --hard参数
- 在本地仓库移动HEAD指针
- 重置暂存区
- 重置工作区
### 2.6、比较文件差异
- git diff [文件名]
- 将工作区中文件和暂存区文件进行对比
- git diff [仓库中的历史版本] [文件名]
- 将工作区中文件和本地库历史记录进行对比
- 不带文件名比较多个文件
## 3、git的分支(master)
### 3.1、什么是分支
- 在版本控制中使用多条线同时推进多个任务。
### 3.2、分支带来的好处
- 协同开发,同时推行项目的开发。
- 开发中某个分支出现问题,不影响其他分支的项目进度,出现问题的分支重新启动即可。
### 3.3、分支操作
- 创建分支
```git
git branch [分支名]
- 查看分支
git branch -v
- 切换分支
git checkout [分支名]
- 合并分支
- 切换到接受修改的分支,也就是使用切换分支的命令
- 执行merge命令(合并)
git merge [有新内容的分支]
- 解决冲突
- 编辑文本,修改特殊符号
- 修改文件内容
- git add [文件名]
- git commit -m ''提交的操作日志''(后面一定不要跟文件名)(结束合并)
4、git的基本原理
4.1、哈希加密
哈希算法是一个加密算法,将明文经过哈希加密算法得到密文,在目前常见的MD5的加密算法也是哈希的一部分。
4.1.1、特点
1.输出的密文数据长度一致。 2.输入数据有变换,输出数据变换会很大。 3.算法不可逆,单向的过程。
4.2、git保存版本的机制
4.2.1、集中式的版本控制工具和文件管理机制
文件列表的方式存储信息,通过列表看出随着时间差异的变化。
4.2.2、git的文件管理机制
git把数据看作是小型文件系统的一组快照,每次提交更新都会对当前的全部文件制作一个快照并且保存这个快照的索引。为了高效,如果文件没有修改,那么不会对该文件进行存储,只是利用链表指针指向当前的存储文件,这被称之为快照流。