【Git】基础操作教程(开发必知)

目录

一、Git 初始化

二、Git 发布流程

2.1、提交改动的文件

三、Git 仓库管理

3.1、添加仓库

3.2、克隆仓库

3.3、推送下拉

四、Git 分支命令

五、Git 常规配置


转发自:【Git】基础操作教程(开发必知)_git 初始化文件夹_一颗不甘坠落的流星的博客-CSDN博客

一、Git 初始化

  • git 安装教程:【Git】安装教程_一颗不甘坠落的流星的博客-CSDN博客

  • git 初始化意义:

1. 我们必须要把我们电脑中的某一个文件夹授权给 `git`
2. `git` 才能对这个文件夹里面的内容进行各种操作
3. 而 `git init` 就是在进行这个授权的操作
4. `git` 不光管理这一个文件夹,包括所有的子文件夹和子文件都会被管理
5. 只有当一个文件夹被 git 管理以后,我们才可以使用 git 的功能去做版本管理
  • git 初始化流程:git 初始化可以将一个文件夹被 git 管理
1. 点进文件夹去,再点鼠标右键,点开 `Git Bash Here`
2. 输入 git 初始化的指令:`git init`
3. 然后文件夹内会多一个 `.git` 的文件夹(这个文件夹是一个隐藏文件夹)
  • 示图:

【Git】基础操作教程(开发必知)_第1张图片

 【Git】基础操作教程(开发必知)_第2张图片

【Git】基础操作教程(开发必知)_第3张图片

  • 管理空文件夹

1. git 本来是不管理空文件夹的,但是也有一些办法让git能管理一个空文件夹
2. 在空文件夹中新建文件:`.gitkeep`
3. 这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除
  • 让某些文件或者文件夹被忽略管理
  • 在和.git同级的位置,新建文件:.gitignore,在这个文件中书写要忽略的内容:
1. 直接写文件名,代表要忽略的是哪个文件
2. 写文件夹路径,表示要忽略的是哪个文件夹
3. *.后缀,表示要忽略的是所有后缀为指定后缀的文件
  • 当一个文件夹被 git 管理了以后,git 就会对当前文件夹进行 “分区”
  • 会分为三个区域:工作区、暂存区、历史区
  • 查看当前分区git管理的文件的状态:git status

二、Git 发布流程

  • git status:可以用来查看文件所在的状态
1. 工作区:我们书写的源码就在工作区里面,文件路径为红色
2. 暂存区:把我们想要存储的内容放在暂存区,文件路径为绿色
3. 历史区:把暂存区里面的内容拿出来形成一个历史版本,这时候就查看不到文件状态了

  • 示例:
# 当修改文件后保存,然后status查看状态,就会提示修改文件的路径,这时文件处于工作区状态
➜ git status
On branch cs/liuxing
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
        modified:   src/App.vue		# 在工作区的文件路径将为红色

no changes added to commit (use "git add" and/or "git commit -a")

# 当我们通过 add 将工作区的文件添加到暂存区后,然后status查看状态,这时文件处于暂存区状态
➜ git add . # 用来跟踪新文件并添加到暂存区 或者 将已跟踪的文件添加到暂存区
➜ git status
On branch cs/liuxing
Changes to be committed:
  (use "git restore --staged ..." to unstage)
        modified:   src/App.vue		# 在暂存区的文件路径将为绿色

# 当我们通过 add 将工作区的文件添加到暂存区后,然后status查看状态,这时文件处于暂存区状态
➜ git commit -m "feat: 完成某页面的开发" # 将暂存区的文件发版
➜ git status 			# 再次查看,此时工作区和暂存区就干净了
On branch cs/liuxing
nothing to commit, working tree clean

2.1、提交改动的文件

  • 当我们代码写到一半的时候,需要切换分支,如果你不commit提交,切换的时候就会把有改动代码,转移到新分支上去,这样就会出问题。
  • 所以就需要不commit提交就能把代码保存下来的方式,那就是 git stash
  • stash是本地的,不会通过git push命令上传到git server上
  • 单独存储已保存的文件
# 保存未commit的修改
git stash

# 保存修改加提示信息
git stash save "说明性文字"

# 取出缓存的工作目录
git stash pop

# 拷出缓存的工作目录
git stash apply stash@{0}

# 查看现有的stash
git stash list

# 移除现有的stash
git stash drop

# 移除所有的stash
git stash clear

 当我们在工作区已经将代码写完了,这时候就要将代码改动提交暂存区

  • 添加文件到暂存区
1. 添加一个文件到暂存区:
git add 文件路径
# 例如:
# git add src/pages/data_access/DataAccessListPage.tsx

2. 添加整个文件夹到暂存区(空文件夹无效):
git add 文件夹路径/
# 例如:
# git add src/pages/data_access/

3. 添加当前文件夹中所有文件和文件夹都到暂存区:
# 可以提交 新建的文件 和 修改的文件,但不处理删除的文件
git add .

# 可以提交 修改的文件 和 删除的文件,但不处理新建的文件
git add -u
# 全写:git add --update

# 提交未跟踪、修改和删除文件
git add -A 
# 全写:git add --all
  •  暂存区:只是帮我们暂时存放内容,我们删除了还是会丢的
  • 要想帮我们保存下来,那么还需要把暂存区的内容提交到历史区
  • git 的历史区,就是把我们暂存区里面的文件变成一个历史版本
  • 当一些文件形成一个版本的时候,就会被一直记录下来了
  • 向历史区里面添加内容的时候,必须保证 暂存区 有内容
  • 因为历史区就是把暂存区里面的内容收录进去
  • 提交文件,形成版本
1. 提交文件并添加说明
git commit -m "说明性文字"
# 一定要写一个简单的说明,方便后续查找版本
# 因为当我们的历史版本多了以后,我们自己也记不住哪个版本做了哪些修改

2. 提交跟踪过的文件(可省略`git add`),不添加文字说明
# 能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -a
# 相当于:
# git add .
# git commit 

3. 提交跟踪过的文件(可省略`git add`),并添加文字说明
# 能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -am "xxx"
# 相当于:
# git add .
# git commit -m "xxx"

4. 查看帮助,还有许多参数有其他效果
git commit --help

5. commit 关键字推荐命名规范:
- feat: 新功能,比如:'feat: 完成登录页面'
- fix: bug修复,比如:'fix: 修复登录页面打不开的问题'
- chore: 日常改动, 比如:'chore: 登录页面标题改为用户登录'

 2.2、回退改动的文件

1:当文件没有使用git add添加到暂存区,只是Ctrl + S保存了,就可以直接使用以下命令将代码回退到为改动之前的状态。

  • 放弃修改已保存的文件

2:当我们已经使用git add相关命令,将工作区的文件提交到暂存群了,可以通过以下命令将文件回退到工作区,也就是为git add的状态

1. 将某个文件从暂存区变为源文件:
git reset HEAD -- 文件路径

2. 将整个文件夹从暂存区变为源文件
git reset HEAD -- 文件夹路径

3. 将所有文件从暂存区变为源文件:
git reset HEAD -- .
  • 回退暂存区的文件到工作区:

3: 撤销当前所有改动,包括已经git add添加到暂存区的文件,会清空工作区和暂存区的文件,相当于回退到当前的commit的版本。

  • 撤销所有改动
git reset --hard HEAD 

4:当我们提交到历史区的文件,的版本出bug后,为了不影响之前的功能,就需要先回退到之前的版本

  • 回退版本基础操作:
# log 查看所有版本消息,-2表示查看最近2次提交的版本,按 Q 键退出信息查看
git log -2
# commit:这一个版本的版本编号
# Author:作者
# Date:本次版本提交时的记录时间
commit 9f9d45f6a9c0fbbc11f2b1dab161edfa9f2ff68b
Author: xingliu
Date:   Fri Jan 7 14:10:13 2022 +0800

    feat: 最新版

commit 4917f349f3b4bb802ebf4c91d96d6b4cbbd5db34
Author: xingliu
Date:   Fri Jan 7 14:08:31 2022 +0800

    feat: 第一版
# 根据查看到的版本commit号,选择回退到相应的版本
1. 回退到第一次提交的版本
git reset --hard 4917f349f3b4bb802ebf4c91d96d6b4cbbd5db34

2. 回退到第二次提交的版本
git reset --hard 9f9d45f6a9c0fbbc11f2b1dab161edfa9f2ff68b

3. 其他命令

# 查看 git reset 帮助
git reset -h

三、Git 仓库管理

3.1、添加仓库

  • 我们先要给 git 添加一个上传的地址
  • 我们还是来到我们的项目文件夹
  • 使用 git remote add origin 仓库地址 来添加
# 在项目文件夹下打开 git base
# 添加仓库地址
git remote add origin https://github.com/guoxiang910223/ceshi1913.git
- remote:远程的意思
- add:添加的意思
- origin:是一个变量名(就是指代后面一长串的地址)
  • git remote -v:查看是否关联上了远程仓库 
git remote -v
orgin github.com/guoxiang910223/ceshi1913.git(fetch)
orgin github.com/guoxiang910223/ceshi1913.git(push)

3.2、克隆仓库

git 克隆是指把远程仓库里面的内容克隆一份到本地
。可以克隆别人的 公开 的仓库,也可以克隆自己的仓库。克隆别人的仓库,我们只能拿下来用,修改后不能从新上传。克隆自己的仓库,我们修改后还可以再次上传更新

我们先找到一个别人的仓库,或者自己的仓库(这里以 jQuery 的仓库为例)

 【Git】基础操作教程(开发必知)_第4张图片

  • 复制好地址以后,选择一个我们要存放内容的文件夹(我这里以桌面为例)
  • 直接在想存放内容的位置打开 git base
  • 输入克隆指令 git clone 仓库地址
  • 例如:git clone https://github.com/jquery/jquery.git
  • 你就会发现你的文件夹里面多了一个叫做 jquery 的文件夹
  • 里面就是人家仓库的所有内容
  • 长期储存密码:
git config credential.helper store

 查看配置:

git config --list

3.3、推送下拉

  • 上传要保证 历史区 里面有内容,会把所有的内容上传到远端

  • 上传指令:

# 指定远程仓库名和分支名(第一次)
git push -u origin master
# origin 指定推送的地址
# master 是上传到远程的 master 分支

# 不指定远程仓库名和分支名(第二次)
git push
  • -u 是为了记录一下用户名和密码,下次上传的时候就不需要再写了
  • 第一次上传要指定远程仓库名和分支名
  • 第二次上传的时候,因为有刚才的记录,就不需要再 写 origin 和 master 了, 会默认传递到 origin 这个地址的 master 分支上
  • 如果你要传递到别的分支上的时候,要再次指定远程仓库名和分支名
  • 这个时候本地的文件夹就真的可以删除了, 因为远程有一份我们的内容,本地的删除了,可以直接把远程的拉回来就行
  • 不管是你克隆下来的仓库还是别的方式弄得本地仓库,当人家的代码更新以后,你想获得最新的代码。我们不需要从新克隆。只要拉取一次代码就可以了
  • 下拉指令:
     
# 将本地代码和远程代码同步:(在本地仓库使用命令)
git pull

  • 这样一来,你本地的仓库就可远程的仓库同步了

  • git 工作开发推送流程:

git add .			# 将所有新增、修改或删除的文件添加到暂存区
git commit -m "版本发布" # 将暂存区的文件发版
git status 			# 查看是否还有文件没有发布上去
git checkout test	# 切换到要合并的分支(发测试就切换到测试分支)
git pull			# 在 test 测试分支上拉取最新代码,避免冲突
git merge dev   	# 在 test 测试分支上合并 dev 开发分支上的代码
git push			# 上传 test 测试分支代码到仓库

四、Git 分支命令

一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。

  • 常用分支命令
# 查看本地分支:
git branch

# 查看远程分支:
git branch -r

# 本地分支重命名:
git branch -m oldName  newName

# 删除本地分支:(不能在要删除的分支上操作)
git branch -d 分支名

# 删除远程分支:(不能在要删除的分支上操作)
git push origin -d 分支名

# 推送本地分支到远程,并于远程分支相关联
git push --set-upstream origin 分支名

# 更新远程分支:
git fetch

# 创建分支:
git branch 分支名

### 切换分支:(常用)
git checkout 分支名

### 切换到上个分支:(常用)
git checkout -

### 创建并切换到这个分支:(常用)
git checkout -b 分支名

### 合并分支:(常用)
git merge 被合并的分支 # 要先跳转到要合并其他分支的分支

# 终止合并分支:
git merge --abort

# 显示当前分支与其他分支的差异
git diff --name-status 其他分支名

# 显示当前分支两次提交的差异
git diff --name-status commitID1 commitID2

常见分支命名

  1. master:主分支,永远只存储一个可以稳定运行的版本,不能再这个分支上直接开发
  2. develop: 主要开发分支,主要用于所用功能开发的代码合并,记录一个个的完整版本
    • 包含测试版本和稳定版本
    • 不要再这个分支上进行开发
  3. feature-xxx:功能开发分支,从 develop 创建的分支
    • 主要用作某一个功能的开发
    • 以自己功能来命名就行,例如 feature-login / feature-list
    • 开发完毕后合并到 develop 分支上
  4. feature-xxx-fix: 某一分支出现 bug 以后,在当前分支下开启一个fix分支
    • 解决完 bug 以后,合并到当前功能分支上
    • 如果是功能分支已经合并之后发现 bug 可以直接在 develop 上开启分支
    • 修复完成之后合并到 develop 分支上
  5. hotfix-xxx: 用于紧急 bug 修复
    • 直接在master分支上开启
    • 修复完成之后合并回 master

五、Git 常规配置

git config命令用于获取并设置存储库或全局选项,这些变量可以控制Git的外观和操作的各个方面

# 查看git配置信息
git config --list

# 查看git用户名
git config user.name

# 查看邮箱配置
git config user.email

# 全局配置用户名
git config --global user.name "nameVal"

# 全局配置邮箱
git config --global user.email "[email protected]"

# 删除全局配置用户名和邮箱
git config --global unset user.name "用户名"
git config --global unset user.email "注册邮箱"

对于git来说,配置文件的权重是「仓库 > 全局 > 系统」,即 「local > global > system」

  • 添加配置项:--add
  • 格式:git config [-local | -global | -system] add section.key value(默认是添加在local配置中)
git config --add sit.name Jack
  • 删除配置项:--unset
  • 格式:git config [-local | -global | -system] -unset section.key
     
git config --local --unset user.name
  • 配置快捷键:alias
# 使用 git st 代替 git status
git config --global alias.st status

# 用 last 表示查看最后一次提交
git config --global alias.last 'log -1 HEAD'
  • Git设置当前分支为默认push分支
git config --global push.default "current"

你可能感兴趣的:(持续集成与发布(CI/CD),git,elasticsearch,大数据)