Git、Gitlab的常用命令总结

目录

一、Git的四个工作区域

二、Git的工作流程

三、Git常用命令

(一)项目创建与初始化

(二)本地分支管理

(三)代码版本管理

四、常见报错及解决方案

(一)commit 相关报错


一、Git的四个工作区域

1、Workspace(工作区)

用于存放项目代码,对文件或代码进行增删改等操作都发生在工作区。

2、Index / Stage(暂存区)

用于存放工作区添加上来的变更内容,使用git add能够将本地所有变更存入暂存区中。

3、Local Repository(本地仓库)

用于存放工作区和暂存区提交上来的变更,使用git commit可以将添加到暂存区的修改文件提交到本地仓库中。本地仓库也就是工作区目录下隐藏的.git文件,包含你提交后的所有版本的数据,其中HEAD指向最新放入仓库的版本。

4、Remote Repository(远程仓库)

用于托管代码的远程服务器,使用git push可以将本地仓库存储的修改内容推送至远程仓库中。

二、Git的工作流程

  1.  在工作区添加、修改、删除文件(coding过程);
  2.  将需要提交的变更文件添加到暂存区;
  3.  将暂存区的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改 (modified)、已暂存 (staged)、已提交 (committed)。

三、Git常用命令

(一)项目创建与初始化

1、git init 新项目初始化,并进行第一次提交

git init
git add .
git commit -m "第一次提交"
git remote add origin 仓库地址
git push origin master

2、git clone 对已有项目进行远程仓库克隆

git clone 仓库地址

(二)本地分支管理

1、查看所有分支

git branch

2、创建新分支(从当前所在分支下)

git branch 新分支名

开发过程中需要创建自己的开发分支进行开发,在未完成测试之前不要在主分支上提交

3、切换到某分支

git checkout 分支名

例如:git checkout master,即切换到 master 主分支,当前分支就是主分支

4、创建新分支(从当前所在分支下),并切换到新分支(2和3的结合)

git checkout -b 分支名

5、将某分支与当前分支合并

(1)若要合并的分支是本地分支

git merge 要合并到的本地分支名

(2)若要合并的分支是远程分支

git merge origin/要合并的远程分支名

工作中的常见场景:

(1)当开发分支上的代码通过测试达到上线标准后,需要合并到master主分支上

# 本地拉取开发分支,保证本地是最新内容
git checkout 开发分支名
git pull
# 切换到主分支下
git checkout master
# 保证获取主分支最新内容
git pull
# 将开发分支合并到主分支上
git merge 开发分支名
# 合并完需要再将主分支推送到远程仓库
git push -u origin master

(2)当开发分支上的代码通过测试达到上线标准后,需要合并到master主分支上,但仅仅希望将开发分支上的部分提交合并到主分支,不希望将所有提交都合并上去

# 本地拉取开发分支,保证本地是最新内容
git checkout 开发分支名
git pull
# 切换到主分支下
git checkout master
# 保证获取主分支最新内容
git pull

# 确定需要从开发分支合并到主分支的提交,查看提交记录
git checkout 开发分支名
git log --oneline
# 记录下你想要合并的提交ID,例如:a123456、b234567等。

# 切换回主分支,并使用cherry-pick命令将选定的提交应用到主分支上
git checkout master
git cherry-pick a123456 b234567

# 如果遇到合并冲突,请解决冲突,并继续执行 cherry-pick 命令
git add 解决完冲突的文件及路径
git commit -m "解决合并冲突"
git cherry-pick --continue

# 最后将主分支推送到远程仓库
git push -u origin master

(3)当master代码改动了,需要更新开发分支上的代码

# 先切换到主分支,并拉取最新代码
git checkout master 
git pull
# 切换到开发分支
git checkout 开发分支名
# 将主分支合并到开发分支
git merge master 
# 将最新的开发分支提交到远程仓库
git push -u origin 开发分支名

6、查看分支工作区状态

# 查看当前分支工作区是否有未跟踪的文件(即是否有未添加到暂存区的文件)
git status
# 查看当前分支工作区的文件与暂存区文件的差异
git diff

(三)代码版本管理

1、git pull 拉取指定分支的最新代码

(1)拉取指定分支的最新代码,并合并到本地分支(以下两种都可以)

# 方法1
git pull origin 要拉取的分支名
# 方法2
git checkout 要拉取的分支名
git pull

(2)拉取指定分支的最新代码,但不合并到本地分支(以下两种都可以)

# 方法1
git fetch origin 要拉取的分支名
# 方法2
git checkout 要拉取的分支名
git fetch

2、git add 添加指定目录到暂存区

(1)添加当前目录下所有文件到暂存区

git add.

(2)添加指定目录到暂存区(包含其子目录)

git add [dir]

(3)添加指定文件到暂存区

git add [fileName1] [fileName2] ...

3、git commit 提交暂存区内容到本地仓库

git commit -m "提交内容说明"

4、git push 将本地仓库分支内容推送到origin远程仓库

git push origin 本地分支名

5、撤销提交变更

(1)git reset:将当前HEAD(最新放入仓库的版本)回退到指定的commit版本,该commit后的所有commit都将被清除

# 【保留工作区,保留暂存区、修改本地仓库】
git reset --soft

# 【保留工作区、修改暂存区、修改本地仓库】(git reset默认的模式)
git reset --mixed

# 【修改工作区、修改暂存区、修改本地仓库】
git reset --hard 

(2)git revert:创建一个新的commit来覆盖当前的commit,指针向后移动,实现撤回功能。

  • git revert 后会多出一条 commit,HEAD向前,可进行撤回操作
  • git reset 直接把之前 commit 删掉,HEAD向后回退

四、常见报错及解决方案

(一)commit 相关报错

报错:

✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]
✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky - commit-msg hook exited with code 1 (error)

解决方案:

由于项目使用了husky,在提交前对代码规范进行了校验,导致报错,commit 时加上提交信息:“fix: xxxxx”即可,比如:

git commit -m "fix: 初始化项目"

报错:

eslint --fix found some errors. Please fix them and try committing again.

解决方案:

git commit --no-verify -m “跳过检查提交”

猜你喜欢

转载自blog.csdn.net/qq_45397526/article/details/130154447