上篇博客聊了<git分支管理之rebase 以及 cherry-pick相关操作>本篇博客我们就以Learning Git中的关卡进行展开.下方列举了LearningGit中的 merge.rebase.reset.revert.cherry-pick 以及交互式rebase相关关卡的操作以及对应的解析.后边在聊交互式rebase操作是,不单单给出了LearningGit中的内容,而且给出了真正的Git分支在交互式rebase操作时的具体案例. learngitbranching的地址为:ht…
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到合并代码的效果,不过其对分支的影响不同.上篇博客中我们聊到了 merge操作.简单的说merge操作就是将两个commit进行合并,然后在这两个分支合并的基础上创建一个新的commit.而变基操作简单的说是改变提交的父类,在改变父类时进行合并操作.合并就可能产生冲突,所以rebase时也会产生冲突,下方会介绍…
上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起>.上篇博客中所涉及的git命令也是git命令操作中常用的基础操作命令,本篇博客继续来总结一下git使用时常用的命令操作以及其他相关基础知识. 下方是本篇博客所会涉及的内容: .gitignore文件的配置 使用 git diff 来查看修改的内容 git 中文件移除 -- git rm git 中的文…
前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探究一下Git的远程操作.今天这篇博客算是Git系列博客的结尾了. 一.PUSH到远端 1.将本地的Merge操作推送给远端 下方左边是我们的git分支的初始状态,我们从master分支上分别创建了三个不同的分支side1.side2.side3.并且在每个分支上都有新的提交.右边是远端的状态,在我们…
前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览>.本篇博客主要涉及了在git版本管理中的分支的创建.切换以及合并.并且罗列了在merge分支使发生冲突时的解决方式.同时还介绍了如何删除本地分支以及远程分支.本篇博客除了参考ProGit中的内容,还参考了learngitbranching这个网站进行的git分支内容的学习和梳理.下方的示例有的给出了基于Le…
本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://git-scm.com/book/zh/v1).本篇博客以及后边的将要发的几篇博客是对之前看ProGit时的笔记的整理.当然在整理时,根据具体示例来梳理了一下知识点,和ProGit上的讲解顺序有些区别.本篇博客聊了Git基础操作的一部分,主要是基于Github上Fork的Masonry仓库来做的,首先Clone相关仓库,然后根据git s…
0.前言 本文主要对git常用命令的工作原理做一个详细的说明,常用命令主要包括: 1.git add git add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理. 2. git commit git commit主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点. 3. git branch 关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作. 4. git merge merge命令把不同的分支合并起来.如下图,在实际开发中…
0.前言 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 上图分别为: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 6个命令分别是: git pull:从远程仓库将代码同步到工作区 git fetch/clone:从远程仓库同步代码到本地仓库 git checkout:用本地仓库代码同步工作区 git add:将工作区代码加到暂存区,实现git管理 git co…
git flow图例镇楼 merge 这个简单,初学者常用.比如主分支是Dev,最新版本是01.然后小明基于此,搞了个feature 分支A,业务:打酱油.然后在上面多次提交,完成功能迭代开发,如A1 ---> A2 ---> A3. Dev 分支 merge A,最后Dev 分支的历史就变成: Dev01 ---> A1 ---> A2 ---> A3. Dev分支head指向最新的提交.附图如下: rebase 中文翻译过来,变基.这个搞完,提交历史会比较清爽,哈哈.me…
1.前言 git包含四种对象文件: blob tree commit tag(目前没用到,暂时忽略) 2. git对象的关系   图 git三种对象关系   粗略一看,可以大致感觉出blob类似于文件,而tree类似于文件夹,而commit则是囊括这一大堆东西的一个对象. 3.SHA-1算法 SHA-1算法具体怎么计算,可以自行google.这里只说一下该算法在git数据存储中的应用.我们可以用git提供的命令来计算一个文件的SHA-1值: echo 'test content' | git h…
1. 前言 因为手里有一份代码之前是直接从其它git服务器上克隆下来的,现在想自己搭建一个git服务器把这份代码管起来. 2. 搭建git服务器 1.安装git: $ sudo apt-get install git 2. 创建一个git用户,用来运行git服务: $ sudo adduser jason 3. 创建证书登录 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/book/.ssh/authorized_keys文件里,一行一个. 此处…
1.前言 Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名).为什么需要别名呢?因为这些字符串太难记了!根据使用场景的不同,Git References分为四类: 2.git references 2.1 指向最后一次提交的reference(分支名) 这类reference以“refs/heads/”为前缀,例如“refs/heads/master”,实际就是git分支,git分支指向某一…
1.前言 我们在介绍git版本管理的时候,没有提到“服务器”的概念,所有的版本管理操作,都是在本地进行的.这就是git与其它版本管理工具(如CVS.SVN等)最本质的区别所在:分布式. 所谓的分布式,是指git仓库不是以client-server的形式组织的,而是以对等的形式,在所有的机器上保存相同的copy(当然,是在各自修改之前),并在需要的时候,同步各自的改动,完成“版本控制”的目的. 2.git管理的分布式 假设上面图片是位于github上的某一个仓库的当前快照,任何人都可以把它copy…
1.前言 git是一种分布式版本管理工具,本文主要是通过阅读博客中几篇讲述git的优秀文章,并对文章进行整理.提炼总结得出一份git的说明文档. 本文档介绍了git的基本原理及常用操作,目标是通过阅读完本文档对git基本原理有一个清晰的认识,同时可以在工作中进行基本的git操作 2.基本术语 分支 git使用一个“链表”,记录仓库里每一次的“修改记录”,“用于保存commit记录的链表”是可以被命名的,它就是我们常说的分支.如master分支(可以当作一个链表头,指向最新一次commit) 图…
最近刚接触Git,下面对一些基本的使用做一下总结. 本文是转载于CSDN:http://blog.csdn.net/rryqsh/article/details/8230560 几乎所有的版本控制工具都有branch功能,branch主要用于以下几个场景: 1,控制产品OEM. 基本上做产品,不同的客户都会提出多种不同特性需求,最简单的例子就是LOGO和标题完全不一样.但是可能产品自身的大部分功能和模块的代码一样的,这个时候如何管理多个客户定制的功能特性,并且不会干扰其他OEM版本的功能呢? 如…
想象一下有例如以下情形:代码库中存在两个分支,而且每一个分支都进行了改动.最后你想要将当中的一个分支合并到其它的分支中.个人博客网址 http://swinghu.github.com/ 那么要问合并的处理过程是怎么样的呢?Git是对每一个分支,根据分支的历史数据依照序列化操作,还是它仅仅是合并每一个分支里文件的最后版本号?这是一个问题,我想对git的merge操作有必要进行分析一下. 回顾一下.我们知道Git的版本号库内部结构是以有向无环图(directed acyclic graph)组织起…
Git中的merge命令实现和工作方式 2015年8月17日星期一 丹丹 git代码在合并两个分支的时候总是会出现一下的错误提示,不能正常的完成合并分支,错误提示如图所示: 但是在其他的终端是可以完成合并任务的,所以是本地iMac的环境问题,推测原因一:.ignore文件的问题,推测原因二:是Xcode的问题. 针对可能原因二: 链接: http://stackoverflow.com/questions/14605231/git-merge-branch-into-master 按照参考文件在…
Git merge是用来合并两个分支的. git merge b      # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 原理 如下: 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 假设远程分支"origin"已经有了2个提交,如图 现在我们在这个分支做一些修改,然后生成两个提交(commit). $ vi f…
之前一直对git的merge与rebase很困惑,而且一般也只使用merge而不是使用rebase.今天受高人指点理清了两者的区别. 首先对于两者而言,他们的结果是一样的,差异在于合并的方式(产生的结果就在于log中看起来会让人感觉到有问题,也就是两者的commit记录会有很大差异) merge的合并方式: 使用rebase的话: 补充点: pull/fetch的区别: fetch只是单纯的拉取代码. pull的实际操作:fetch-merge.所以当远程代码有更新时,本地pull后会可能需要处…
首先来了解两个概念: 工作区:比如你的项目目录 暂存区:git和其他版本控制系统的不同之处就是有这个暂存区的概念. .git不是工作区,而是git 版本库,在版本库中存放着很多东西,比如暂存区(stage),git为我们创建的第一个分支master,以及指向master的一个指针head. 一.提交系列命令: git add .     // 将文件修改添加到暂存区; git commit -m ""    // 将暂存区的所有内容提交到当前分支   二.查看信息命令: 1.git s…
Git 学习(五)远程仓库 之前的章节所说的是本地Git仓库的操作,版本管理的优越性显然不会仅仅在本地.远程仓库也就是服务器或是网络端的仓库操作也是必须的. 本文具体说明 Git 的远程仓库操作,示例是在 GitHub 上进行的,若存在服务器或其他站点,操作也是类似的.GitHub 网址:https://github.com/ 远程库 Clone 通常团队的git库都是已建立的,你需要将远程git库的文件 clone 至你本地,git可快速完成这一操作. 首先,你得知道远程 git库的服务器地址…
git学习——<一>git安装 git学习——<二>git配置文件 git学习——<三>git操作 git学习——<四>git版本管理 一.提出问题 今天开发的过程中遇到一个问题,A组接到开发任务要修改file文件,B组在此之前的15天为了完成自己的开发任务对file文件进行了修改,为了同步代码,B组将自己未完成的模块file文件提交到了cvs上.A对此一无所知,A组在完成开发任务后,把file文件完全上到了现网环境,报错了. 当然,避免上述问题的途径很多,…
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git commit 到不是同一个远程分支 这里由于提交自己的代码第一次提交到A分支,第二次提交B分支,然后报错了,这里报错以后,会提示一个百度自己内部的链接,你点击链接就可以照着提示去修改,可以说还是省了不少事,不用自己去google百度去解决,开发效率也提高不少 上面图片中有6e8713f is CR par…
Git知识总结 Git安装 windows 在git官网中下载安装程序,然后按默认选项安装即可 安装完成后,在开始菜单里找到"Git"->"Git Bash",蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入: $ git config --global user.name "Your Name" $ git config --global user.email "email@ex…
本文有点长而且有点乱,但就像Mark Twain Blaise Pascal的笑话里说的那样:我没有时间让它更短些.在Git的邮件列表里有很多关于本文的讨论,我会尽量把其中相关的观点列在下面. 我最常说的关于git使用的一个经验就是: 不要用git pull,用git fetch和git merge代替它. git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法.当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方.看起来git…
git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管理 几个月用下来,咱每天要做的就是开始工作前,alt+下方向键,从服务端拉取数据:结束工作后,alt+上方向键,将代码提交到服务器上.就这两步,完成了版本管理. 因此,有了这篇面向新手的图文并茂的文章,一步步按照步骤下来,你就可以完成项目对git的融合. (提示:面向新手的介绍型文章,因此步骤细致繁…
原文网址:http://www.cnblogs.com/flying_bat/p/3408634.html 本文有点长而且有点乱,但就像Mark Twain Blaise Pascal的笑话里说的那样:我没有时间让它更短些.在Git的邮件列表里有很多关于本文的讨论,我会尽量把其中相关的观点列在下面. 我最常说的关于git使用的一个经验就是: 不要用git pull,用git fetch和git merge代替它. git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种…
英文原文:git: fetch and merge, don’t pull This is too long and rambling, but to steal a joke from Mark Twain Blaise Pascal I haven’t had time to make it shorter yet.  There is some discussion of this post on the git mailing list, but much of it is tangen…
开篇就提到过,Git是一个分布式版本管理系统.但是到现在为止,我们所有的演练都是在本地Git仓库.如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心就很容易弄混其他人的进度.另外,你也一定希望合作者们即使在自己不开机的时候也能从仓库获取数据--拥有一个更稳定的公共仓库十分有用.因此,更好的合作方式是建立一个大家都可以访问的共享仓库,从那里推送和拉取数据.我们将把这个仓库称为"Git 服务器". 传输协议 理…
概述 工作中使用git进行代码托管,一开始只知道git add commit,之后了解了git-flow插件,觉得超牛逼,一键生成feature分支,再后来听说原生git命令更好用,于是又去学了原生git命令. 看了下git官方文档,记录下学习的心得. 基本介绍 git分为未跟踪区,跟踪区和暂存区. 文件一般都存放在未跟踪区,修改后的文件也存放在未跟踪区. 我们熟知的git add命令会把修改提交到跟踪区.值得一提的是,我们一般使用git add .来提交所有改动,也可以使用git add pa…