Git 的诞生是一个很是有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制软件)管理 Linux 的核心开发,后来 BitMover 中止了对 Linux 的支持,因而 Linus 秉承本身的版本本身写的精神,花了两周时间本身用 C 写了一个分布式版本控制系统,这就是 Git。php
传统的设计方案咱们能够简单的分红两块:工做目录,远程仓库。可是做为一个目标明确的分布式版本控制系统,首先要作的就是添加一个本地仓库。接着咱们选择在工做目录与远程仓库中间加一个缓冲区域,叫作暂存区。linux
若是仍是没弄懂,那再来看看这篇精简版的吧。git
看完还不会用的GIT操做,你就掐死我github
不管你是前端仍是后台,不管是运维仍是移动端研发,GIT是逃避不了的东西,固然你说你要用SVN,那不在此次的讨论范围以内。很少说,请看下文GIT图解分析,10分钟学会git操做,固然下面的教程是为实战为主,会跟你在别的网站看到的不同。算法
实战是掌握一个工具最快的方法。segmentfault
Git 实战详解bash
什么是版本库?版本库又名仓库,英文名repository,你能够简单的理解一个目录,这个目录里面的全部文件均可以被Git管理起来,每一个文件的修改,删除,Git都能跟踪,以便任什么时候刻均可以追踪历史,或者在未来某个时刻还能够将文件”还原”。服务器
实战结束,来闯关试试学会了多少。框架
为保你们都能顺利通关,学到全部的知识点,接下来我会写过关攻略,详细介绍每一关的玩法。而且我不会直接给答案,而是演示整个过关的过程。
闯过这 54 关,点亮你的 Git 技能树 (五) - 完结篇
附上备忘小手册。
第一次链接远程仓库的配置
管理修改
撤销修改(没有提交的[commit])
删除文件
建立与合并分支
Bug分支管理
远程仓库的操做
下面是本身学习使用git的经常使用的命令,还有些使用过程当中碰到问题的解决办法,现整理以下。
相信通过上面的入门之后,再对比下面的图解会更有收获和体会。
本文背景,在实际项目中使用git已有一年多,发现很多同事虽然会使用经常使用git指令,但并不理解每一个指令对应的做用原理。今天静下心总结下git 的基本理解:代码的存在区域;本文以实际项目出发,理清使用git过程当中,代码的迁徙流程。
场景: 提交了一个commit(该提交包含不少文件), 发现有问题, 须要回滚, 将线上分支(master)回滚到上一次commit。
git 的分支是它最明显的特性, 大部分人听别人推荐使用git都会听到“git分支操做方便...”,对比其余版本控制系统git 分支操做有难以置信的轻量,建立新分支几乎瞬间完成,不一样分支之间切换也很是快捷方便;本文将结合实践以及绘图概括、总结git常见的分支操做指令以及注意事项。
终于看完了,最后再来总结回顾一下。
我的以为git是须要认真学的,虽然是个工具但不学习很容易把本身弄糊涂,但愿这篇博客能够在某些时候帮到您,让您大概理解git的工做原理并把基本命令串起来。那么下面就说一下Git重要的基本命令吧。
本文专一于支撑 Git 的图结构以及这些图的性质影响 Git 行为的方式。经过了解底层,你能够将你心中对 Git 的模型创建在事实之上,而不是基于经过积累使用经验而创建的假设上。这个更真实的模型可让你更好的理解 Git 作了什么,正在作什么以及将要作什么。
Master 是 Git 默认的主分支,版本库初始化之后,默认就是在主分支在进行开发。master分支代码最完整,最干净,用于生产环境。
主分支只用来发布重大版本,平常开发应该在另外一条分支上完成。咱们把开发用的分支叫作Develop。
还有一些辅助开发分支,用于应对一些特定目的的版本开发。
在讲git的reset和checkout的区别以前,不得不说说HEAD、Index、Working Directory三个区域。
git rebase因其“新手应当远离的Git黑魔法”的名号名声在外,但只要使用得当,其可使团队开发变得无比轻松。本文将对比两个类似的命令:git rebase与git rebase来区分它们的使用场景,最终将“黑魔法”归入本身的工做流中。
本文主要讲解下Git Rebase的基本概念用法、其内部原理以及咱们在真实项目中使用Git Rebase应该遵循的原则以及为啥须要遵循这些原则。
diff是咱们天天都要使用的一个功能,每次提交时,我都习惯先用git diff --cached看看此次提交更改了些什么,肯定没问题,而后再git commit。git生成的diff很是直观,直观到我历来都没有去思考过diff是怎么生成的,以为这应该是很简单的一件事,两个文件作个对比,不就好了。
原本计划本篇介绍Git分支的相关知识点与操做,可是准备的过程当中发现涉及到不少内部存储原理,决定先介绍一下Git存储原理,明白了这些,有助于理解后续内容,对Git的使用也会有很大帮助。
本文讲述了如何使用 git rebase -i 及 git cherry-pick 实现代码回滚。代码回滚属于高危操做,建议慎用!
深刻理解学习Git工做流(git-workflow-tutorial)
工做流其实不是一个初级主题,背后的本质问题实际上是有效的项目流程管理和高效的开发协同约定,不只是Git或SVN等VCS或SCM工具的使用。
这篇指南以你们在SVN中已经广为熟悉使用的集中式工做流做为起点,按部就班地演进到其它高效的分布式工做流,还介绍了如何配合使用便利的Pull Request功能,体系地讲解了各类工做流的应用。
统一的工做流程是相当重要的,无论对于哪个行业的做业来讲都同样。对于咱们开发人员,工做流包含了开发时 Git 的使用规范、Repo 管理的规范、测试过程的规范、设计交互的管理规范等等。本篇文章重点说 Git 的使用规范和 repo 管理的规范。
Gitflow工做流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工做流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。
Gitflow工做流没有用超出功能分支工做流的概念和命令,而是为不一样的分支分配一个很明确的角色,并定义分支之间如何和何时进行交互。除了使用功能分支,在作准备、维护和记录发布也使用各自的分支。固然你能够用上功能分支工做流全部的好处:Pull Requests、隔离实验性开发和更高效的协做。
本文定位于为使用GIT标准分支开发流程的开发团队新人提供一份参考指南,其中的内容都是咱们公司在研发团队初创时所遵循的一些开发流程标准,通过近一年的实践,虽然说还有不少不足,可是随着团队经验的丰富和人员的扩张,我会适时地更新本文,分享咱们在使用GIT开发流程中遇到的问题和解决方案。
由于gitHub上的项目是公开的,不适合公司内部项目放在上面,而私人的须要收费,这绝非是咱们愿意的。因此找了个跟gitHub很类似,可是又免费的gitLab。如今将搭建gitLab过程记录一下留做参考。
用 Git Subtree 在多个 Git 项目间双向同步子项目,附简明使用手册
何时须要 Subtree ?
一、当多个项目共用同一坨代码,而这坨代码跟着项目在快速更新的时候
二、把一部分代码迁移出去独立为一个新的 git 仓库,但又但愿可以保留这部分代码的历史提交记录。
Git-WebHook 自动化部署工具 - 支持Github / GitLab / Gogs / GitOsc
Git WebHook 是一个使用 Python Flask + SQLAchemy + Celery + Redis + React 开发的用于迅速搭建并使用 WebHook 进行自动化部署和运维系统,支持:Github / GitLab / Gogs / GitOsc。
Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
为了方便开发测试或项目部署至服务器不那么繁琐,搞一个自动部署的小轮子也是必要的。小轮子须要涉及到 Coding 项目托管平台(也能够用 Github 平台),Linux服务器的Nginx、Python( Tornado框架 )。同时配置项目托管平台的我的私钥或项目公钥,保证 git pull 能直接拉取。
前言:本教程只面向那些我的开发者,想要本身在linux上搭建一个git中央仓库用来上传发布本身的项目。可是对于团队来讲可能有更高的要求,可使用gitlab搭建一个可视化的相似github的版本管理系统
使用 "5W1H" 写出高可读的 Git Commit Message