Git学习笔记和实践总结

126 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Git学习笔记和实践总结:介绍分支管理,工作区,常用命令,文末有分支管理实践总结(Git工作流、分支管理四象限)

分支管理

Production 分支 也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release, 这个分支只能从其他分支合并,不能在这个分支直接修改

Develop 分支 这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支

Feature 分支 这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release

Release分支 当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支

Hotfix分支 当我们在Production发现新的Bug时候,我们需要创建一个Hotfix, 完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release

工作区(Working Directory)

git add命令实际上是把文件添加到Stage git commit就是往master分支上提交更改

常用命令

# 命令说明
git revert:撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销
git clean:删除工作目录中所有没有tracked过的文件
git reset:返回到某个节点
git clone:命令用于从远程主机克隆一个版本库。Git支持https和ssh协议,https每次需要输入密码速度慢
git pull:命令用于取回远程主机某个分支的更新,与本地的指定分支合并
git push:命令用于将本地分支的更新,推送到远程主机
git remote:远程仓库管理
git fetch:命令用于将远程主机版本库中更新内容取回本地,可指定分支
git log:显示提交历史
git merge:合并分支

## 分支管理
# 基于远程分支“master”,创建本地分支dev
git checkout -b dev origin/master
# 创建分支并切换。相当于执行git branch dev和git checkout dev两条命令
git checkout -b dev
# 切换到master分支
git checkout master
# 查看本地分支与远程分支的映射关系
git branch -vv
# 建立本地分支与远程分支的映射关系
git branch -u origin/addFile
git branch --set-upstream-to origin/addFile
# 撤销本地分支与远程分支的映射关系
git branch --unset-upstream
# 删除本地分支
git branch -D xxx
# 删除远程分支
git push origin :xxx

## 回退管理
git reset:返回到某个节点
#(默认方式)回退到某个版本,只保留源码,取消了commit ,取消了add
git reset --mixed HASH
# 回到当前分支最新的版本,不保留修改(不可逆)
git reset --hard [HASH]
# 返回到某个节点。回退了commit的信息,保留修改
git reset --soft HASH
# 从add中返回到之前的状态,保留修改
git reset -q 文件
# 回退到上个版本/回退到前3次提交之前/退到或进到指定commit
git reset --hard HEAD^
git reset --hard HEAD~3
git reset --hard commit_id
# 远程强制更新到本地
git reset --hard origin/dev

## 配置管理
git config --list
# 设置用户名
git config --global user.name "Jerry Mouse"
# 设置邮箱ID
git config --global user.email "jerry@yiibai.com"
(如果省略--global选项,那么配置是具体当前的Git存储库)

## 临时工作区
git stash    #储藏当前工作现场,等以后恢复现场继续工作
git stash list    #查询保存的工作现场列表
git stash apply stash@{0}    #恢复指定的stash
git stash pop

## 常用命令
# 拉取远程分支并创建本地分支
git checkout -b 本地分支名x origin/远程分支名x

# 强行拉取远程分支覆盖本地
$git reset --hard origin/master

# 把本地的dev 分支强制推送到远端 master
git push origin dev:master -f

# 查看远程库的一些信息,及与本地分支的信息。
git remote show origin

# 删除本地库中这些相比较远程库中已经不存在的分支
git remote prune origin

# 将某一次提交合入到本地当前分支上
$ git cherry-pick commitid

# 取消本地增加和修改的所有文件(工作目录和缓存区回到最近一次commit时候一摸一样的状态)
$ git checkout . && git clean -df

分支管理实践总结

分支管理流程图

image.png

Git工作流

  1. 主要分支
    1. master 最新线上发布版本
    2. dev 最新的开发进度
  2. 要点
    1. 代码合并应遵守"上游优先"规则(代码合并的顺序按照环境依次推送[dev->master],紧急情况除外)
    2. 合并分支时加上--no-ff参数(保证一个非常清晰的提交历史)
    3. 可直接在dev分支提交修改(开发周期短且无并行任务开发期间)
    4. 非主要分支不需要推送到远程服务器(features/hotfixs分支)

分支管理四象限

image.png

参考

  1. codewords.recurse.com/issues/two/… 这篇文章解释了 Git 是如何工作的。它假设您对 Git 足够了解,可以使用它来对您的项目进行版本控制。

  2. blog.csdn.net/qq_32452623… Git三大特色之WorkFlow(工作流)

  3. nvie.com/posts/a-suc… A successful Git branching model

  4. www.ruanyifeng.com/blog/2015/0… Git 使用规范流程

  5. github.com/k88hudson/g… Flight rules for Git