Git版本管理完全指南—学好Git一文足矣

软件老王 2019-04-03 13:36:04 ⋅ 857 阅读
开心😺一下
image.png


第一部分 命令行

1、分支操作
1. git branch  创建分支
2. git checkout -b 创建并切换到新建的分支上
3. git checkout  切换分支
4. git branch 查看分支列表
5. git branch -v 查看所有分支的最后一次操作
6. git branch -vv 查看当前分支
7. git brabch -b 分支名 origin/分支名 创建远程分支到本地
8. git branch --merged 查看别的分支和当前分支合并过的分支
9. git branch --no-merged 查看未与当前分支合并的分支
10. git branch -d 分支名 删除本地分支
11. git branch -D 分支名 强行删除分支
12. git branch origin :分支名 删除远处仓库分支
13. git merge 分支名  合并分支到当前分支上
2、暂存操作
1. git stash 暂存当前修改
2. git stash apply 恢复最近的一次暂存
3. git stash pop 恢复暂存并删除暂存记录
4. git stash list 查看暂存列表
5. git stash drop 暂存名(例:stash@{0})  移除某次暂存
6. git stash clear 清除暂存
3、回退操作
1. git reset --hard HEAD^ 回退到上一个版本
2. git reset --hard ahdhs1(commit_id)  回退到某个版本
3. git checkout -- file撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态)
4. git reset HEAD file  撤回暂存区的文件修改到工作区
4、标签操作
1. git tag 标签名 添加标签(默认对当前版本)
2. git tag 标签名 commit_id 对某一提交记录打标签
3. git tag -a 标签名 -m '描述'  创建新标签并增加备注
4. git tag 列出所有标签列表
5. git show 标签名  查看标签信息
6. git tag -d 标签名  删除本地标签
7. git push origin 标签名 推送标签到远程仓库
8. git push origin --tags 推送所有标签到远程仓库
9. git push origin :refs/tags/标签名  从远程仓库中删除标签
5、其它操作

常规操作

1. git push origin test 推送本地分支到远程仓库
2. git rm -r --cached 文件/文件夹名字 取消文件被版本控制
3. git reflog 获取执行过的命令
4. git log --graph 查看分支合并图
5. git merge --no-ff -m '合并描述' 分支名  不使用Fast forward方式合并,采用这种方式合并可以看到合并记录
6. git check-ignore -v 文件名  查看忽略规则
7. git add -f 文件名  强制将文件提交
8. git reflog 打印所有的日志,假如:ABC三个节点,回退到B后,仍旧打印所有日志

git创建项目仓库

1、git init      初始化
2、git remote add  origin  url 关联远程仓库
3、git pull
4、git fetch 获取远程仓库中所有的分支到本地

忽略已加入到版本库中的文件

1、git update-index --assume-unchanged file 忽略单个文件
2、git rm -r --cached 文件/文件夹名字  (. 忽略全部文件)

取消忽略文件

git update-index --no-assume-unchanged file

拉取、上传免密码

git config --global credential.helper store

第二部分 版本管理

GitFlow 是由 Vincent Driessen 提出的一个 git操作流程标准。包含如下几个关键分支:

1. master:主分支develop:主开发分支,包含确定即将发布的代码;
2. feature:新功能分支,一般一个新功能对应一个分支,对于功能的拆分需要比较合理,以避免一些后面不必要的代码冲突;
3. release:发布分支,发布时候用的分支,一般测试时候发现的 bug 在这个分支进行修复;
4. hotfix:热修复分支,紧急修 bug 的时候用。
GitFlow 的优势有如下几点:
1. 并行开发:GitFlow可以很方便的实现并行开发。每个新功能都会建立一个新的 feature分支,从而和已经完成的功能隔离开来,而且只有在新功能完成开发的情况下,其对应的 feature分支才会合并到主开发分支上(也就是我们经常说的develop分支)。另外,如果你正在开发某个功能,同时又有一个新的功能需要开发,你只需要提交当前 feature 的代码,然后创建另外一个feature 分支并完成新功能开发。然后再切回之前的 feature 分支即可继续完成之前功能的开发。
2. 协作开发:GitFlow 还支持多人协同开发,因为每个 feature 分支上改动的代码都只是为了让某个新的 feature 可以独立运行。同时我们也很容易知道每个人都在干啥。
3. 发布阶段:当一个新 feature 开发完成的时候,它会被合并到 develop 分支,这个分支主要用来暂时保存那些还没有发布的内容,所以如果需要再开发新的 feature,我们只需要从 develop 分支创建新分支,即可包含所有已经完成的 feature 。
4. 支持紧急修复:GitFlow 还包含了 hotfix 分支。这种类型的分支是从某个已经发布的 tag 上创建出来并做一个紧急的修复,而且这个紧急修复只影响这个已经发布的 tag,而不会影响到你正在开发的新 feature。

然后就是 GitFlow 最经典的几张流程图,一定要理解:

image.png

feature 分支都是从 develop 分支创建,完成后再合并到 develop 分支上,等待发布

image.png

当需要发布时,我们从 develop 分支创建一个 release 分支
然后这个 release 分支会发布到测试环境进行测试,如果发现问题就在这个分支直接进行修复。在所有问题修复之前,我们会不停的重复发布->测试->修复->重新发布->重新测试这个流程

image.png

发布结束后,这个release 分支会合并到 develop 和 master 分支,从而保证不会有代码丢失

image.png

master 分支只跟踪已经发布的代码,合并到 master 上的 commit 只能来自 release 分支和 hotfix 分支。
hotfix 分支的作用是紧急修复一些 Bug。它们都是从 master 分支上的某个 tag 建立,修复结束后再合并到 develop 和 master 分支上。

image.png


第三部分 Git常见错误汇总

常见错误1、windows使用git时出现:warning:LF will be replaced by CRLF

windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法:

  1. $ rm -rf .git  // 删除.git  

  2. $ git config --global core.autocrlf false  //禁用自动转换   

然后重新执行:

  1. $ git init    

  2. $ git add .  


常见错误2、git push origin master出错:error:failed to push sonme refs to...

很明显是:

本地没有update到最新版本的项目(git上有README.md文件没下载下来)

本地直接push所以会出错。

【解决过程】

1.看到提示里面,感觉是本地的代码不是最新的。

所以觉得应该是类似于svn中的,先update一下,再去commit,估计就可以了。

所以先去pull试试:

git pull  --rebase origin master

解决!

常见错误3、fatal: remote origin already exists.

解决办法如下:

    1、先输入$ git remote rm origin

    2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!

    3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容

    4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc

    5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!


---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    Git 2.29稳定版发布,实验性支持更安全的SHA-256

    Git 2.29 稳定版已发布。此前发布的多个版本都在为将 Git 使用的安全哈希算法从 SHA-1 迁移至 SHA-256 做准备,2.29 版本终于实验性支持 SHA-256,可用于提升代码仓库

    Git中心式工作流程

    Git中心式工作流程

    Git特性分支工作流程

    Git特性分支工作流程

    Git典型工作流程介绍

    Git典型工作流程介绍

    Git托管平台的拉取请求

    拉取请求是Bitbucket的一个特性(经调查,Gitlab、Github都支持这个特性),可以让开发人员的协作更加容易,他们提供了一个友好的网页界面让开发者在集成代码到正式库之前对其进行讨论。 Bibucket Github Gitlab ...

    Gitlab Flow

    基于GIT分支的开发流程层出不穷,Gitlab也不甘人后,提出了围绕GitLab的开发协作流程模型。

    Gitflow工作流程

    Gitflow工作流程来源于Vincent Driessen的网站nvie。 这个工作流程围绕项目发布定义了一个严格的模型,它比特性分支工作流程复杂很多,为更大型的项目提供了强劲的管理框架。 本流程

    交叉型工作流程

    交叉型工作流程跟前面讨论过的流程相比大不相同,不再使用单一的服务器端中心代码仓库,而是给每个开发人员一个服务器端的代码仓库,也就是说每个开发人员都有两个Git仓库:私人的本地仓库和公共的服务器端仓库

    Git 2.30.1 发布

    Git 2.30.1 已经发布,此版本主要用于合并 “master” 上累积的修补程序,以准备仍与 2.30.x 相关的 2.31 版本发布。 部分更新内容 修复了 "git fetch

    推荐款前端数据源管理工具 algeb

    ALGEB 简介 这是一个比较抽象的库,开始可能比较难理解。我写它的初衷,是创建可响应的数据请求管理。在传统数据请求中,我们只是把携带ajax代码的堆函数放在一起,这样就可以调用接口。但是这种

    SourceTree里GitFlow的使用

    这几天看详细了一下Git Flow的模型介绍,感觉“很很强大”,这个开发模型利用GIT的易于分支和合并的特点,能够比较容易地将开发、发布、部署、bug修复分隔开来。 正准备在自己的团队内部推广

    WebStorm 2020.3 发布,支持 Tailwind CSS,Git Staging 等

    WebStorm 2020.3 发布,这是本年度最后次重大更新。重要更新包括对 Tailwind CSS 的支持,将 IDE 主题与操作系统设置同步,以及 Git Staging。 外观 重做

    SourceGit v3.3 已经发布,开源的 Git 客户端

    SourceGit v3.3 已经发布,这是一个开源的 Git 客户端。 此版本更新内容包括: 主题优化 增加auto fetch功能(每10分钟自动fetch打开的仓库),可在全局设置中关闭 移

    开源文档管理系统 Wizard 1.2.6 发布

    概述 Wizard 是款开源的文档管理系统,支持 Markdown 档,Swagger 文档以及表格档,适应于中小规模的技术团队文档管理完全免费。Wizard 并不是款云产品,不提供任何云

    深度!RocketMQ高级进阶知识精讲

      https://juejin.cn/post/6944894142652612638 前言 大家,我是jack xu,本文是RockeMQ精讲系列的最后篇,讲的是RockeMQ一些

    分享一个标星42.4k 的商城管理后台项目模板

    项目简介 mall项目是套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品

    版本控制介绍

    原文:An introduction to version control 如果你对版本控制很有兴趣,但还没有真正使用,最可能的原因是版本控制让人困惑。如果你是新手的话,了解一下版本控制的基本概念

    【开源资讯】phpMyAdmin 4.9.7 和 5.0.4 发布,可视化 MySQL 管理后台

    phpMyAdmin 4.9.7 和 5.0.4 发布了。phpMyAdmin 是一个非常受欢迎的 web MySQL 数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增

    WeCube 2.7.1 发布,站式 IT 架构管理和运维管理工具

    WeCube简介 微众银行在分布式架构实践的过程中,发现将银行核心系统构建于分布式架构之上,会遇到一些与传统单体应用不同的痛点(例如,服务器增多,部署难度大;调用链长,全链路跟踪困难; 系统复杂,问题定位时间长等),在逐步解决这些痛点的过程中,总...