Git源代码管理
一、 分支管理
使用 git 进行源代码管理,一般将某个项目的所有分支分为以下几条主线
1. Master
顾名思义,既然名字叫 Master ,那么该分支就是主分支的意思。 master 分支永远是production-ready 的状态,即稳定可产品化发布的状态。
2. Develop
这个分支就是我们平常开发的一个主要分支了,不管是要做新的 feature 还是需要做bug fix ,都是从这个分支分出来做。在这个分支下主要负责记录开发状态下相对稳
定的版本,即完成了某个 feature 或者修复了某个 bug 后的开发稳定版本。
3. Feature branches
这是由许多分别负责不同feature 开发的分支组成的一个分支系列。 new feature 主要就在这个分支系列下进行开发。当功能点开发测试完毕之后,就会合并到 develop
分支去。
4. release branches
这个分支系列从 develop 分支出来,也就是预发分支。在预发状态下,我们往往会进行预发环境下的测试,如果出现缺陷,那么就在该 release 分支下进行修复,修复完毕测试通过后,即分别并入master 分支后 develop 分支,随后 master 分支做正常发布。
5. Hotfix branches
这个分支系列也就是我们常说的紧急线上修复,当线上出现bug 且特别紧急的时候,就可以从 master 拉出分支到这里进行修复,修复完成后分别并入master 和 develop
分支。
二、 工作原理
Git 的工作方式:
也就是说, 每次提交版本变动的时候, git 会保存一个快照(snapshot)。如果文件没有被更改,git 也不会再次保存,而是提供一个到原来文件的链接。这样一来, git 更像是一个小型的文
件系统。此外, git 的所有操作都可以是本地的,仅仅在将新版本的内容上传到服务器上时才需要连接网络。
Git 目录 (repository )是 Git 保存元数据和对象数据库的地方。这也是 Git 最重要的部分。
工作目录 (working directory )是项目某个版本的内容。
暂存区 (staging area)是一个简单的文件,通常包含在 Git 目录中。其中存储了将要进入下一次提交的信息。
Git 的基本工作流程如下:
修改 Git add 暂存 Git commit 提交
1.在工作目录中修改文件。
2.标识(stage)文件,并将文件快照添加到暂存区。
3.执行 commit ,将获取暂存区中的文件,并将快照永久保存到 Git 目录中。
三、 常用命令
创建工程
git init
提交修改
git add 后就从修改变为暂存
git commit 后就从暂存变为提交。提交规范
在commit时,如果有对应PR(需求项),请在第一行写上 PR 号,然后再描述信息(另起行),并把涉及到改动的文件名附上。
1. 回溯
改错了,不过还没有git add
git reset --hard
改错了,已经git add
git reset -q [files]
(其实就是git add 的反向操作 )
改错了,已经git commit
git reset --soft HEAD^
(其实就是git commit 的反向操作 )
已经git commit ,忘记写注释(PR)或者漏提交了部分文件
如果添加注释可以直接执行命令 git commit --amend ,填写注释保存,如果添加文件先执行 git add 后执行 git commit --amend
2. 创建分支
查看分支
git branch
切换分支
git checkout [branch name]
创建分支(在当前代码的基础上)
git branch [branch name]
合并分支
先检出目标分支再把其他分支合并进去git checkout [branch name]
git merge [other_branch]
3. 删除分支
git branch -d [branch name]
(不能删?用这个! )
git branch -D [branch name]
4. 标签管理
git tag v1.0
5. 远程操作
克隆远程库
git clone
定义远程库
git remote
从远程库取回更新
git fetch
从远程库取回更新并合并
git pull
推送至远程库
git push
四、 操作流程 (本地 )
1. 准备工作
初始化目录
git init
git add readme.md
git commit -m 'master init'
然后从 master 分支中拉出 develop 分支
git checkout -b develop
2. 功能点开发
有新的需求或功能点需要开发时,从最新 develop 分支中拉出一个 feature 分支
git checkout -b [feature name]
完成 feature 开发后需要对 feature 分支进行合并操作
git checkout develop
git merge [feature name]
- 处理冲突
当合并分支出现冲突时,需要手动将文件冲突的部分进行修改。对修改后的文件保存
并重新提交。 - 产品发布
当 develop 分支已经达到了一个可以发布的状态,将最新的 develop 分支拉出来成
为一个 release 分支
git checkout -b release
假设需要一些环境配置,新建配置文件并提交
git add release.config
git commit -m 'release1'
当遇到一些预发环境下的 bug ,这个时候我就直接在 release 分支下进行修复演进,
如果 bug 问题很大, 则需要重新并入develop 中,拉出新的 feature 进行开发重构。
如果预发一切正常,需要将 release 分支同时并入master 分支和 develop 分支,
master 分支供线上发布, develop 分支供下次开发演进。
git checkout master
git merge [release name]
git checkout develop
git merge [release name]
- 线上 bug 热修复
当碰到一些线上意想不到的 bug ,需要紧急修复时,就直接从 master 分支拉出
hotfixes 分支进行修复。
git checkout master
git checkout -b [hotfix name]
bug 修复完毕,测试通过后我们将分支合并到 master 和 develop 中去。
git checkout develop
git merge [hotfix name]
git checkout master
git merge [hotfix name]
五、 远程操作
远程操作的 5 个常用命令
git clone
git remote
git fetch
git pull
git push
- 从远程主机克隆一个版本库
git clone < 版本库的网址>
该命令会在本地主机生成一个目录,与远程主机的版本库同名。
- 管理主机名
为了便于管理, Git 要求每个远程主机都必须指定一个主机名。
不带选项的时候, git remote 命令列出所有远程主机。
- 将更新取回本地
git fetch < 远 程主机名 >
默认情况下, git fetch 取回所有分支( branch )的更新。如果只想取回特定分支的
更新,可以指定分支名。
git fetch < 远 程主机名 > < 分支名 >
git branch 命令的 -r 选项,可以用来查看远程分支, -a 选项查看所有分支。
取回远程主机的更新以后,可以在它的基础上,使用 git checkout 命令创建一个新的分支。
git checkout -b newBrach origin/master
也可以使用 git merge 命令或者 git rebase 命令,在本地分支上合并远程分支。
git merge origin/master
或者
git rebase origin/master
- 取回更新同时合并到本地
git pull 命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。
git pull < 远 程主机名 > < 远 程分支名 >:< 本地分支名 >
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next
上面命令表示, 取回 origin/next 分支, 再与当前分支合并。 实质上, 这等同于先做 git fetch ,再做 git merge。
git fetch origin
git merge origin/next
Git源代码管理的更多相关文章
- Git 源代码管理工具
Git 源代码管理工具 Git基本信息 Git :Git是一个“分布式”的版本控制工具 Git的作者是Linux之父 Linus Benedict Torvolds,当初开发Git仅仅是为了辅助Lin ...
- git源代码管理工具
git是一款源代码管理工具 是分布式版本管理工具 分布式管理必须先在本地提交然后才能提交到服务器: svn集中式版本管理工具 集中式版本管理工具离开服务器就做不了版本管理: 初始化仓库 1.用git初 ...
- IOS Git源代码管理工具
.新建一个“本地仓库” $ git init .配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.em ...
- VS2019取消git源代码管理
VS2019->工具->选项->源代码管理->插件管理 详见下图
- VS2015 Git 源代码管理工具使用记录
1. 首先到源代码托管平台申请个账户:https://git.oschina.net/ 2.创建流程图: 2.1 开始创建项目: 2.2 3. 4.
- Git源代码管理笔记
很早之前也学过git但是没有详细的记录,这次是做个复习,巩固 若有不对的地方请您指出 目录 Git和SVN有什么区别? 什么是Git? github仓库 Star和Fork Pull request ...
- VsCode中好用的git源代码管理插件GitLens
1.在插件tab搜索GitLens 2.安装成功后将光标移至代码行即会显示代码编写者 3.在VsCode左侧菜单栏,点击GitLens图标即可查看History,也可以查看全部的日志 4.查看上下pu ...
- git@oschina.net源代码管理使用日记
git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下载: 下载网址为:http://git-scm.com/download,根据您的操作系统选择 ...
- git@oschina.net源代码管理使用日记【转】
转自:https://www.cnblogs.com/Juvy/p/3556902.html git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下 ...
随机推荐
- HTML文本框样式大全
粘贴自Christian.Cao 博客园地址 : https://www.cnblogs.com/QQ862668193/p/6893797.html 输入框景背景透明:<input style ...
- Kafka系列2-producer和consumer报错
1. 使用127.0.0.1启动生产和消费进程: 1)启动生产者进程: bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --top ...
- lombok的安装
Lombok简介 Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法.官方地址:https:/ ...
- cmake 入门实战
当你的程序只有一个源文件时,直接就可以用gcc命令编译它 g++ main.cc 这样会输出一个main.out https://www.hahack.com/codes/cmake/
- javascript放大镜效果
JS实现放大镜效果 首先我们先设想一下放大镜效果 1.当鼠标进入小盒子的时候,把大图片显示出来 2.当指定移动区域的时候,显示当前放大区域(放大效果) 3.鼠标移除我们让它消失 一.实现页面布局HTM ...
- kubernetes中的Pause容器如何理解?
前几篇文章都是讲的Kubernetes集群和相关组件的部署,但是部署只是入门的第一步,得理解其中的一些知识才行.今天给大家分享下Kubernets的pause容器的作用. Pause容器 全称infr ...
- 【常见错误】--Nltk使用错误
一.错误类型 AttributeError: module 'nltk' has no attribute 'word_tokenize' 二.情形及解决办法 安装了nltk后,无法使用,报错如上,错 ...
- axure授权码
授权人:University of Science and Technology of China (CLASSROOM)授权密钥:DTXRAnPn1P65Rt0xB4eTQ+4bF5IUF0gu0X ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- qml demo分析(text-字体展示)
上一篇文章分析了一个小游戏,使用qml编写界面+js进行复杂逻辑控制,算是一个比较完整的qml示例代码了,今天就不那么继续变态啦,来看一个简单的字体示例程序吧,该示例代码比较简单,主要是展示了几个简单 ...