# GIT 的由來
Linux 内核 linus
linus 花了2周时间 写了git
性能远胜于 SVN
## GIT 设置 用户名和邮箱
```bash
C:\Users\xxx\Desktop\上課\830\git-test>git config --global user.name "xxx"
C:\Users\xxx\Desktop\上課\830\git-test>git config --global user.email "xxx@163.com"
# 查看
C:\Users\xxx\Desktop\上課\830\git-test>git config --list
```
## GIT 帮助
```bash
# 查看 add 命令的文档
C:\Users\Desktop\上課\830\git-test>git help add
```
## 仓库初始化
```bash
# Initialized empty Git repository
C:\Users\Desktop\上課\830\git-test>git init
```
## 查看当前仓库的状态
```bash
C:\Users\Desktop\上課\830\git-test>git status
```
## 追踪文件
```bash
# 追踪某一个文件
C:\Users\Desktop\上課\830\git-test>git add index.html
# 追踪所有。
C:\Users\Desktop\上課\830\git-test>git add .
```
## git 版本生成
```bash
# 在提交新版前, 先 add .
git add .
# m message "版本的描述"
git commit -m "init v2"
# master 分支名 c1ff0cd 版本号 hash值 init v2 描述
[master c1ff0cd] init v2
2 files changed, 2 insertions(+)
```
## git log 日志
```bash
# 查看详细信息
git log
# 查看单行信息
git log --oneline
```
# git 版本回退
```bash
# 会回退到某一个版本, 但是该版本的后续版本将不会在 git log中显示
git reset --hard 38509ee
```
# git 回到旧版本
```bash
# 全部文件回到某一个版本的状态。
git checkout 891dbb9 -- .
```
# 文件的忽略
```bash 在项目目录下新建.gitignore文件并添加规则
/node_modules
a.jpg
*.rar
p.py
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
```
```text
warning: in the working copy of 'src/App.vue', LF will be replaced by CRLF the next time Git touches it
在 Unix 系统中,行尾用换行符 (LF) 表示。 在 Windows 中,一行由回车符 (CR) 和换行符 (LF) 表示,即 (CRLF)。 当你从 git 获取从 unix 系统上传的代码时,它们只会有一个 LF。
```
```bash
# 不能在当前分支删除当前分支
# -d 保护性删除 , 没有完全合并就不能删
git branch master -d
error: The branch 'master' is not fully merged.
If you are sure you want to delete it, run 'git branch -D master'.
# 强行删除
git branch -D master
Deleted branch master (was 89d2643).
```
```text
冲突? 合并的时候可能发生
解决? 自动解决是解决不了的。必须手动解决。
和你的同事商量。 保留哪些,删除哪些,自行决定。
解决冲突后, git add . git commit -m "comment"
如果不能 解决冲突 可以 git merge --abort 终止合并
```
#查看当前分支
git branch
# 远端仓库 gitlab
```bash
cd existing_folder # 进入工程目录
git init --initial-branch=main # 初始化仓库 默认分支名设为 main
# 添加 origin 它指向 后面的地址
git remote add origin http://192.168.99.208/gitlab-instance-9856cb23/008.git
git add . # 添加到 暂存区。
git commit -m "Initial commit" # 提交版本
git push -u origin main # 建立远端追踪分支
```
建立好一个新的远端仓库
1. 你的同事 会clone 到本地。 clone 会把 .git 文件夹 下载下来。
git clone http://192.168.99.208:19000/gitlab-instance-9856cb23/007.git
2. 你的同事开发,提交,push到远端仓库
3. 你可能会不知道你的同事已经push了。 此时你再push的时候会报错
你需要 git pull 远端仓库的最新内容。
git pull == git fetch + git merge
pull的时候 可能会 遇到 conflict (冲突)
解决冲突。
然后再 提交新版本
然后再 push
http://192.168.99.208:19000/gitlab-instance-9856cb23/007.git