【Git】笔记
# Git 基本理论(核心)
## 工作区域
Git 本地有三个工作区域,工作目录()、暂存区()、资源库(Repository或Git Directory)。如果再加上远程的 git 仓库(Remote Directory)就分为四个工作区域。
转换关系如下:
`Working Directory` >>> `Stage(Index)` >>> `History` >>> `Remote Directory`
使用命令: `git add files` `git commit` `git push`
Git 转换关系:
Workspace:工作区,平时存放项目代码的地方
Index / Stage:暂存区,用于临时存放你的改动,实质上它只是一个文件,保存即将提交到文件列表信息
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里有提交的所有版本的数据。其中 `HEAD` 指向最新放入仓库的版本。
Remote:远程仓库,托管代码的服务器。
## 工作流程
git 的工作流程一般是:
1、在工作目录中添加、修改文件。
2、将需要进行版本管理的文件放入暂存区。 `git add .` 点 . 就是全部的
3、将暂存区的文件提交到 git 仓库。 `git commit`
因此,git 管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)
创建工作目录:
# Git 项目搭建
```
git add . 添加到暂存区
git commit 提交到 git 仓库
git push 提交到远程仓库
git clone url 从远程仓库克隆到本地
```
## 本地仓库搭建
创建本地仓库的方法有两种:一是创建全新的本地仓库、二是克隆远程仓库。
### 1、在当前目录新建一个 Git 代码库
命令:`git init`
执行完后,会生成一个 `.git` 目录,关于版本等信息都在里面。
类似于 node.js 的 `init` 初始化。
### 2、克隆远程仓库
将远程服务器上的仓库完全镜像一份到本地。
命令:`git clone [url]`
例如:`git clone https://github.com/.......xxx.git`
# Git 文件操作
# 使用 GitHub
## 设置绑定 SSH 公钥
进入目录 C:\Users\用户\.ssh
### 生成公钥 ###
生成公钥: `ssh-keygen`
### 生成公钥 使用加密算法 ###
生成公钥,使用 rsa 加密算法: `ssh-keygen -t rsa`
## 在 Github 绑定公钥
在 C:\Users\用户\.ssh 目录下,打开文件 `id_rsa.pub`,复制该公钥,粘贴到 github 上,配置完了
其中,`id_rsa` 是私钥,`id_rsa.pub` 是公钥
## 使用流程
先 `git clone [url]` 克隆到本地,同时也配置了远程地址,后续push。
`git add .` 提交到缓存区
`git commit -m "消息"` 提交到本地仓库
`git push` 提交到远程仓库
## 注意!
### Git 提交后 显示作者不是自己 ###
本机的git配置文档中,邮箱是 `xxx@gmail.com` ,而 GitHub 的邮箱是 `aaa@outlook.com`,那么就不会显示是“自己”上传的,而是“别人”上传的,这个“别人”就是本机配置的用户名和邮箱。
所以,把本机邮箱设置的与 GitHub 的一样,才可以显示是“自己”上传的。
如果不想显示自己邮箱,可以使用 GitHub 提供的`@users.noreply.github.com` 邮箱,和上面的效果一样,都可以归为自己上传的。自行在设置找到邮箱,例如:`2333+aa@users.noreply.github.com`
### 方法 ###
配置用户名:`git config --global user.name "You name"`
配置邮箱号:`git config --global user.email "You email"`
### 绑定本地 Git 配置的邮箱, Github 才能统计提交的代码。 ###
# Git 分支
字面意思。
例如,master 主分支,还有三个分支 `dev`、`ver 5.0` 与 `ver 6.0` 分支,很明显可以看出,有一个 dev 开发版的分支,与不同的版本的分支。
## 常用命令
```
# 列出所有本地分支
`git branch`
# 列出所有远程分支
`git branch -r`
# 新建一个分支
`git branch [branch-name]`
# 新建一个分支,并切换到此分支
`git checkout -b [branch]`
# 合并指定分支到 当前分支
`git merge [branch]`
# 删除分支
`git branch -d [branch-name]`
# 删除远程分支
`git push origin --delete [branch-name]`
`git branch -dr [remote/branch]`
```