likes
comments
collection

Git工作流文档

作者站长头像
站长
· 阅读数 28

前言

就目前当下的情况来说,只是一种规范,做与不做全都随你。其目的有: 一、master主分支代码稳定(核心) 二、版本快速回退

运行流程

(假装这里有一张Mermaid图表....)

指令

一、配置信息指令

// 常用
git config user.name   // 查看用户名
git config user.email   // 查看邮箱
git config --global user.name "guangtouwuke"   // 切换用户
git config --global user.email "guangtouwuke@qq.com"   // 切换邮箱

二、操作指令

1、git init

新项目初始化,并进行第一次提交至远程仓库

git init
git add .
git commit -m "guangtouwuke..."
git remote add origin https://gitlab/guangtouwuke.git
git push origin master

2、git clone

对github、gitlab远程仓库,克隆已有项目

git clone https://github.com/guangtouwuke.git

3、git pull、git fetch

(1)git pull 会将远程master分支上(或其他)的代码拉取下来,并执行合并至本地

git pull origin
git pull https://github.com/guangtouwuke.git

(2)git fetch 会将远程master分支上(或其他)的代码拉取下来,但不执行合并至本地

git fetch --all
git fetch --tags

(3)git pull 和git fetch区别 远端跟踪分支不同 git fetch能够直接更改远端跟踪分支 git pull无法直接对远程跟踪分支操作,我们必须先切回本地分支然后创建一个新的commit提交 拉取不同

git pull是从远程获取最新版本并merge到本地,会自动合并或修改当前的工作。 git fetch会将数据拉取到本地仓库,它并不会自动合并或修改当前的工作。

4、git add

(1)添加指定目录到暂存区,包括子目录

git add [dir]
git add README hello.js   // 例如:添加2个文件到暂存区

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

git add .

5、git commit

将暂存区内容添加到本地仓库中

git commit -m "这是一次提交..."

6、版本回撤/退

(1)回滚代码,撤销某一次commit,并强推到远程仓库 如果需要删除的 commit 是最新的,那么可以通过 git reset 命令将代码回滚到之前某次提交的状态,但一定要将现有的代码做好备份,否则回滚之后这些变动都会消失

git log   // 查询要回滚的 commit_id
git reset --hard commit_id   // HEAD 就会指向此次的提交记录
git push origin HEAD --force   // 强制推送到远端

(2)回退到上一个版本

git reset HEAD^   // 所有内容回退到上一个版本
git reset HEAD^ evil.js   // 将单个文件evil.js回退到上一个版本

(3)回退到指定版本

git log   // 查看日志(其实查看tag也可以),拿到commit_id
git reset -- hard commit_id

(4)回退到上上上上一个版本....【情景】:由于提错了分支分支原因,一不小心将代码提交到本地仓库,但是还未推送至远端,就可以考虑:

git reset --soft HEAD~4
/*
HEAD说明:
HEAD 或者 HEAD~0 表示当前版本
HEAD^ 或者 HEAD~1 表示上一个版本
HEAD^^ 或者 HEAD~2 表示上上一个版本..(以此类推)
*/

(5)误删回退 场景:回滚代码之后发现复制错了 commit_id,或者误删了某次 commit 记录,最好是没有上传至远程仓库的情况,如果已经上传至远程了,重新覆盖一遍也许是个好办法

git relog // 复制要恢复操作的前面的 hash 值
git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash

7、分支(重头)

(1)简单的几句话

git branch 分支名   // 创建分支 —— 增

git branch master  // 切入主分支,删除分支前,需要切换到其他分支
git branch -d 分支名称   // 删除分支 —— 删
git push origin --delete 远程分支名称   // 删除远端分支

git branch   // 查看所有分支 —— 查
git branch -r   // 查看远端分支

git checkout [guangtouwuke...]   // 切换至guangtouwuke分支上

(2)git merge 合并分支 场景讲解:如果test分支已经达到了上线的标准了,test分支的代码就要合并到master分支上,指令如下:

git checkout master   // 切换到master主分支上
git merge test   // test分支合入master
git push origin master   // 推送到远程的master分支上

(3)创建推送

git checkout dev   // 切换到dev分支
git push origin dev   // 将dev分支推送到远程

8、标签(Tag)

到了一个时间节点或者版本节点,希望可以将这个节点记住,作为日后稳定版本回退的依据。这个时候tag就起作用了

git tag   // 查看本地标签
git tag -a 916v2.0 -m "guangtouwuke push a tag"

git push origin 916v2.0   // 将本地标签推送到远程

git ls-remote --tags origin   // 查看远程tag

git tag -d 916v2.0   // 删除本地标签
git push origin :refs/tags/916v2.0   // 删除远程标签