《瑞吉外卖》项目学习笔记-Git 
分布式版本控制工具
1、功能
- 代码回溯
- 版本切换
- 多人协作
- 远程备份
2、大纲
- Git概述
- Git代码托管服务
- Git常用命令
- IDEA中使用Git
Git概述 
- Git简介
- Git下载安装
1、Git简介
- 本地仓库
- 远程仓库
2、Git下载安装
Git代码托管服务 
- 常用的git代码托管服务
- 使用码云代码托管服务
1、常用的git代码托管服务
- Github https://github.com/
- 码云 https://gitee.com/
- GitLab https://about.gitlab.com/
- BitBucket https://bitbucket.org/
Git 常用命令 
- Git 全局设置
- 获取Git仓库
- 概念:工作区、暂存区、版本库
- Git工作区中文件的状态
- 本地仓库操作
- 远程仓库操作
- 分支操作
- 标签操作
1、Git 全局设置
bash
# 设置用户信息
git config --global user.name 'username'
git config --global user.email 'user@qq.com'
# 查看配置信息
git config --list2、获取Git仓库
bash
# 方式一:本地初始化Git仓库
git init
# 方式二:从远程仓库克隆
git clone <远程仓库地址>3、概念:工作区、暂存区、版本库
- 工作区 工作目录
- 暂存区 .git/index暂存区stage
- 版本库 .git隐藏文件夹
【工作区】 [git add] ->【暂存区】 [git commit] ->【版本库】bash
# 在【工作区】 创建文件
touch User.java
# 将【工作区】文件添加到【暂存区】
git add .
# 将【暂存区】文件添加到【版本库】
git commit -m 'add file'4、Git工作区中文件的状态
工作区文件状态
- untracked 未跟踪(未纳入版本控制)
- tracked 已跟踪(已纳入版本控制) - Unmodified 未修改
- Modified 已修改
- Staged 已暂存
 
bash
# 新建文件处于【Untracked】
$ touch User.java
$ git status
On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
    user.java
# 添加到暂存区【Staged】
$ git add .
$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   user.java
# 添加文件到版本库
$ git commit -m 'add file'
[master (root-commit) 9fdba5a] add file
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 user.java
$ git status
On branch master
nothing to commit, working tree clean5、本地仓库操作
常用命令 | 说明
- | - git status | 查看文件状态 git add | 将文件的修改加入暂存区 git reset | 将暂存区的文件取消暂存或者是切换到指定版本 git commit | 将暂存区的文件修改提交到版本库 git log | 查看日志
修改文件 User.java 并提交到版本库
java
public class User{
    
}bash
# 查看log
$ git log
commit 9a05bf544a2d6d85e67d66460115b86687ff9f10 (HEAD -> master)
Author: xxx <xxx@qq.com>
Date:   Sat Dec 10 20:10:48 2022 +0800
    change name
commit 9fdba5a102b73c1328d4e0303e1c793e9459d40f
Author: xxx <xxx@qq.com>
Date:   Fri Dec 9 22:29:33 2022 +0800
    add file
# 回退到指定历史版本
$ git reset --hard 9fdba5a102b73c1328d4e0303e1c793e9459d40f6、远程仓库操作
常用命令 | 说明
- | - git remote | 查看远程仓库 git remote add | 添加远程仓库 git clone | 从远程仓库克隆 git pull | 从远程仓库拉取 git push | 推送到远程仓库
bash
# 绑定远程仓库
# git remote add <name> <url>
$ git remote add origin git@gitee.com:mouday/git-demo.git
# 查看远程仓库
$ git remote -v
origin  git@gitee.com:mouday/git-demo.git (fetch)
origin  git@gitee.com:mouday/git-demo.git (push)
# 推送到远程仓库
# git push <remote-name> <branch-name>
$ git push origin master切换到上级目录
bash
# 从远程仓库克隆
# git clone <url>
$ git clone git@gitee.com:mouday/git-demo.git
# 从远程仓库拉取
# git pull <remote> <branch>
$ git pull如果是本地创建的仓库,要从远程仓库拉取文件,会报错
bash
$ git pull origin master
From gitee.com:mouday/git-demo
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories
# 指定参考可解决此问题
$ git pull origin master --allow-unrelated-histories7、分支操作
常用命令 | 说明
- | - git branch | 查看分支 git branch [branch-name] | 创建分支 git checkout [branch-name] |切换分支 git push [remote-name] [branch-name] | 推送至远程仓库 git merge [branch-name] | 合并分支
查看分支
bash
# 查看本地分支
$ git branch
* master
# 查看远程分支
$ git branch -r
origin/master
# 查看所有本地和远程分支
$ git branch -a
* master
  remotes/origin/master创建分支
bash
# git branch [branch-name]
$ git branch dev
$ git branch
  dev
* master切换分支
bash
# git checkout [branch-name]
$ git checkout dev
Switched to branch 'dev'
$ git branch
* dev
  master推送至远程仓库
bash
# git push [remote-name] [branch-name]
$ git push origin dev
# 或者将本地仓库和远程仓库绑定
$ git push --set-upstream origin dev
# 之后就可以直接push
$ git push合并分支
bash
# 先切换到主分支
$ git checkout master
# 将dev 分支合并到master 分支
# git merge [branch-name]
$ git merge dev冲突解决
查看冲突文件,修改冲突部分内容,重新提交
bash
$ git merge dev
Auto-merging dev.txt
CONFLICT (content): Merge conflict in dev.txt
Automatic merge failed; fix conflicts and then commit the result.8、标签操作
常用命令 | 说明
- | - git tag | 列出已有标签 git tag [name] | 创建标签 git push [short-name] [name] | 将标签推送至远程仓库 git checkout -b [branch] [name] | 检出标签
示例
bash
# 创建标签
$ git tag v0.1
# 查看标签
$ git tag
v0.1
# 将标签推送至远程仓库
$ git push origin v0.1
# 检出标签到分支
$ git checkout -b b0.1 v0.1注意:标签是一个静态的概念,某一时刻的快照
IDEA中使用Git 
VCS 版本控制
.gitignore 忽略git管理的文件