Git 时间,版本控制工具的高级用法

现在的你对于 Git 应该完全不会感到陌生了吧,通过了之前两节内容的学习,你已经掌握了 Git 中很多的常用命令,像提交代码这种简单的操作相信肯定是难不倒你的。

那么打开 Git Bash,并进入到 BaiduMapTest 这个项目的根目录,然后执行提交操作:

git init
git add .
git commit -m "First Commit."

这样就将准备工作完成了,下面就让我们开始学习关于 Git 的高级用法。

1.  分支的用法

分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。分支的工作原理示意图如图
11.16 所示。

图 11.16

你也许会有疑惑,为什么需要建立分支呢,只有在主干线上进行开发不是挺好的吗?没错,通常情况下,只在主干线上进行开发是完全没有问题的,不过一旦涉及到出版本的情况,如果不建立分支的话,你就会非常地头疼。举个简单的例子吧,比如说你们公司研发了一款不错的软件,最近刚刚完成,并推出了 1.0 版本。但是领导是不会让你们闲着的,马上提出了新的需求,让你们投入到了
1.1 版本的开发工作当中。过了几个星期,1.1 版本的功能已完成了一半,但是这个时候又用户反馈,之前上线的 1.0 版本发现了几个重大的 bug,严重影响软件的正常使用。领导也相当重视这个问题,要求你们立刻修复这些 bug。因为现在 1.1 版本已开发一半了,如果在现有代码的基础上修复这些 bug,那么更新的 1.0 版本将会带有一半 1.1 版本的功能!

进退两难了是不是?但是如果你使用了分支的话,就完全不会存在这个让人头疼的问题。你只需要在发布
1.0 版本的时候建立一个分支,然后在主干线上继续开发 1.1 版本的功能。当 1.0 版本上发现任何 bug 的时候,就在分支上进行修改,然后发布新的 1.0 版本,并记得将修改后的代码合并到主干线上。这样的话,不仅可以轻松解决掉
1.0 版本存在的 bug,而且保证了主干线上的代码也已经修复了这些 bug,当 1.1 版本发布时就不会有同样的 bug 存在了。

说了这么多,相信你也已经意识到分支的重要性了,那么我们马上来学习一下如何在 Git 中操作分支吧。

分支的英文名是 branch,如果想要查看当前的版本库当中有哪些分支,可以使用
git branch -a 这个命令,结果如图 11.17 所示。

图 11.17

由于目前 BaiduMapTest 项目中还没有创建过任何分支,因此只有一个 master 分支存在,这也就是前面所说的主干线。接下来我们尝试去创建一个分支,命令如下:

git branch version1.0

这样就创建了一个名为 version1.0 的分支,我们再次输入 git branch -a 这个命令来检查一下,结果如图 11.18 所示。

图 11.18

可以看到,果然有一个叫作 version1.0 的分支出现了。你会发现,master 分支的前面有一个 * 号,说明目前我们的代码还是在 master 分支上的,那么怎样才能切换到 version1.0 这个分支上呢?其实也很简单,只需要使用 checkout 命令即可,如下所示:

git checkout version1.0

再次输入 git branch -a 来进行检查,结果如图 11.19 所示。

图 11.19

可以看到,我们已经把代码成功切换到 version1.0 这个分支上了。

需要注意的是,在 version1.0 分支上修改并提交的代码将不会影响到 master 分支。同样的道理,在 master 分支上修改并提交的代码也不会影响到 version1.0 分支。因此,如果我们在 version1.0 分支上修复了一个 bug,在 master 分支上这个 bug 仍然是存在的。这时将修改的代码一行行复制到 master 分支上显然不是一种聪明的做法,最好的办法就是使用 merge 命令来完成合并操作,如下所示:

git checkout master
git merge version1.0

仅仅这样简单的两行命令,就可以把在 version1.0 分支上修改并提交的内容合并到 master 分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要静下心来慢慢地找出并解决这些冲突,Git 在这里就无法帮助你了。

最后,当我们不再需要 version1.0 这个分支的时候,可以使用如下命令将这个分支删除掉:

git branch -D version1.0

2.  与远程版本库协作

可以这样说,如果你是一个人在开发,那么使用版本控制工具就远远无法发挥出它真正强大的功能。没错,所有的版本控制工具最重要的一个特定就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成某个功能后,就将代码提交到服务器,其他的成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都是相同的。这样的话,每个团队成员就可以各司其职,大家共同来完成一个较为庞大的项目。

那么如何使用 Git 来进行团队合作开发呢?这就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始的代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队中的每个成员最好都要养成经常从版本库中获取最新代码的习惯,不然的话,大家的代码就很有可能经常出现冲突。

比如说现在有一个远程版本库的 Git 地址是 https://github.com/example/test.git,就可以使用如下的命令将代码下载到本地:

git clone https://github.com/example/test.git

之后你在这份代码的基础上进行了一些修改和提交,那么怎样才能把本地修改的内容同步到远程版本库上呢?这就需要借助 push 命令来完成了,用法如下所示:

git push origin master

其中 origin
部分指定的是远程版本库的 Git 地址,master
部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到 https://github.com/example/test.git 这个版本库的 master 分支上的功能。

知道了将本地的修改同步到远程版本库上的方法,接下来我们看一下如何将远程版本库上的修改同步到本地。Git 提供了两种两门来完成此功能,分别是
fetch 和
pull,fetch 的语法规则和 push 是差不多的,如下所示:

git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上去,而是会存放到一个 origin/master 分支上,这时我们可以通过 diff 命令来查看远程版本库上到底修改了哪些东西:

git diff origin/master

之后再调用 merge 命令将 origin/master 分支上的修改合并到主分支上即可,如下所示:

git merge origin/master

而 pull 命令则是相当于将
fetch 和 merge 这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master

也许你现在对远程版本库的使用还会感觉比较抽象,没关系,因为暂时我们只是了解了一下命令的用法,还没进行实践,后面你将会对远程版本库的用法有更深一层的认识。

摘自《第一行代码》

时间: 2024-12-12 10:55:03

Git 时间,版本控制工具的高级用法的相关文章

it入门之:学会使用Git 分布式版本控制工具

环境:window 工具:git & TortoiseGit 下载安装以及配置环境变量 :略略略 创建Github账户:登录https://github.com/用自己的常用邮箱创建账户,用来管理自己的代码 打开Git-bash 输入: ssh-keygen -t rsa -C "[email protected]" #连续三次回车,默认:/c/Users/Administrator/.ssh · 在c盘,当前用户文件夹下,有个.ssh 文件夹,在里边 找到 id_rsa.pu

GIT&GITHUB 版本控制工具

01 GIT: 分布式版本控制:SVN: 集中式版本控制 [03]功能 系统修改:数据备份:版本管理(版本快照):权限限制:历史记录:分支管理: 版本控制方式: 集中式:单点故障,最大的问题 分布式:每个本地有完整的历史存储,可以避免单点故障 [05] GIT 的优势 1. 大部分在本地完成,不需要联网 2. 完整性保证: 3. 优先添加数据,而不是删除修改数据,方便恢复历史数据 4. 分支操作流畅快捷 [06] GIT 安装 1. 安装目录:非中文,且没有空格,否则可能受到干扰 enable

Git分布式版本控制工具

一.安装Git  1.下载Windows版的Git:msysgit:官方下载地址:http://msysgit.github.io,安装选定要安装的目录(路径杜绝中文),剩下的按照默认安装即可,参考:GIt安装教程 .   2.安装完成后,在开始菜单里找到"Git"->"Git Bash",弹出一个类似命令行的窗口:或是在CMD命令提示符下,输入git回车可以看到很多提示,就说明Git安装成功!   3.初始化目录 生成隐藏文件 .git 负责版本的保存 [e

邓西百度网盘批量分享工具之高级用法

新版本(可到官网下载)增加了分享数量限制(用于解决当前版本分享达到上限自动停止后第二天分享时还提示被限制的问题)及分享深度.类型的选项,可以根据不同需求选择不同的选项来达到目的. 下面将详细介绍这两项参数的设置用作用. 一.分享数量限制 首先默认保持初始设置值0,第一次分享待程序分享自动停止,去分享清单查看此次分享的数量值(比如300),那么此值就是此百度帐号每天可分享的数量,那么此时就可以将此值适当变小,比如290,更改此配置,等能正常分享时理论上就不会再产生“分享数量达到限制,过24小时后再

git log 高级用法

转自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.3-Git-log%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95 内容很详细.实用. 这是一篇在原文(BY atlassian)基础上演绎的译文.除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享. 每一个版本控制系统的出现都是为了让你记录代码的变化.你可以看到项目的历史记录--谁贡献了什么.bug是什么时候引入的,还可以撤回有问题的

基于GitLab与Git Extensions搭建版本控制工具

1.背景 大家知道GitHub是现在非常流行的代码托管工具,但是如果有些项目不想开源的话,则需要付费,因此萌生了自己搭建一个Git的版本控制工具,供内网使用.GitLab则是个好的选择,但是GitLab只支持Linux版本,因此则需在Windows服务器上搭建个Linux的虚拟机,我选择了Ubuntu.此时服务器端选型成功,客户端需要安装什么呢,我选择了Git Extensions,用它是因为他直接集成了Git以及KDiff3工具,更方便的是这个工具自带Putty,可以很方便地生成SSH公钥和私

Git TortoiseGit 版本控制【总结】

Git   TortoiseGit 版本控制工具 Git 的安装 下载:https://git-for-windows.github.io/ 或 https://git-scm.com/ 除了安装路径,全部按默认即可: --> 选择安装路径 --> 使用默认的组件 --> 创建开始菜单文件夹 --> 选择使用Git的命令行模式,选择默认Git Bash模式会创建一个快捷命令行: --> 选择换行格式,默认为第一个跨平台样式: --> Finish 安装完成,桌面会生成一

开源分布式版本控制工具 —— Git 之旅

转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-tourofgit/ Git 主张的分布式代码库与文件快照的设计思想,相对于传统 CVS.SVN 等集中式.文件差异式版本控制工具是一种挑战与颠覆.Git 带来了离线提交.轻量级分支等诸多便利.不过,也有人质疑 Git 的复杂性,并由此拔高了学习成本,某种程序上影响了开发者使用或者迁移 Git 的项目进度,笔者同样感同身受,这也是本文的出发点. 不同于各种 Git 用法指南,本文在介

Git log高级用法

格式化Log输出 首先,这篇文章会展示几种git log格式化输出的例子.大多数例子只是通过标记向git log请求或多或少的信息. 如果你不喜欢默认的git log格式,你可以用git config的别名功能来给你想要的格式创建一个快捷方式. Oneline --oneline标记把每一个提交压缩到了一行中.它默认只显示提交ID和提交信息的第一行.git log --oneline的输出一般是这样的: 0e25143 Merge branch 'feature' ad8621a Fix a b