课程地址 版本控制入门 – 搬进 Github》

笔记参考 《搬进 Github》

Git客户端的使用

Git for windows下载

新建一个仓库tata,使用sublime新建一个文件hello,如图

回到GitHub客户端,如下所示,显示了文件的变化,如果只需要先提交hello,可单击good所在的行忽略good

在左下角填写对本次提交的描述:

点击History可查看历史提交

如果要撤回提交,则在changes中选择undo即可。但是undo操作只适用于还没有同步的版本,即还没有同步到Github网站上。可通过如下操作进行撤回

没有找到版本回滚,好像是取消了,还是通过命令行进行了版本回退操作。原来觉得命令行有些麻烦,有点怕使用,但其实想想应该多用命令行,掌握基本的操作其实也不难。

将本地仓库同步到Github网站上,点击

私有为付费项目,取消选中,填写描述,过一会可在自己的Github网站上看到同步成功的仓库

简单分支操作

创建新分支

如下创建一个新分支idea

如下,分支idea创建成功,打钩表明当前指针指向idea分支

默认情况下这个 idea 分支只是存在于本地,如果想在远端仓库上发布这个分支,就点一下 idea 分支右侧的 Publish 按钮。

这样,到远端仓库看一下,发现多了一个 idea 分支,输入框中不但能搜索已有分支,还能创建新分支。很多操作在本地客户端和 github.com 上都能进行。

删除分支

合并分支

切换到要合并到的分支,例为master,选择Branch中的Merge into current branch

选择要合并到mater的分支,点击merge into master即完成合并操作。merge 之后, master 分支指针指向了 merge commit,也就自动拥有了 idea 分支上的最新版本了。idea 分支一般这会儿就可以删除了。

master 中拥有了 idea 中的所有代码。底层历史新生成了一个 C5 ,这是一个“融合版本”( Merge Commit )这个合并挺特殊,里面一般没有修改内容,它的作用主要是把两个分支合并起来。怎么合并的呢?把 master 的内容 sync 到 github.com 上,然后查看一下这个 merge commit ,会发现它有两个 parent

代码冲突 conflicts

实际中经常有这样的情况,我正在 idea 分支上开发一个比较大的功能。但是这个时候突然发现了一个紧急的问题需要修复,所以我会直接到 master 分支上,做一个 commit 来解决这个紧急的问题。然后会来继续到 idea 上开发。

其他的情形也有,总之这样就会出现,两个不同分支上并行开发,同时都有新的 commit ,这个一般没有问题,一样可以直接 merge

但是如果在两个分支上改动了同一个地方,合并的就会出现代码冲突。 因为 git 不知道该听哪个分支的,所以只能报出冲突的位置,让开发者手动解决。

来具体操作一下。在 idea 分支上,改动 hello文件中的一行,比如改成 AAA,commit 了,然后切换到 master 分支上,把这一行的内容改为 BBB ,也一样做 commit。这样再到客户端,把 idea 分支 merge 到 master 之中,操作不会直接成功,而是会看到下面的代码冲突界面。

右击打开存在冲突的文件,看到如下内容

<<<<<<< HEAD
BBB
=======
AAA
>>>>>>> idea

注意上面的 HEAD 是代表当前分支,此刻对应我的情形就是 master 。所以 ===== 就是两个冲突代码块的分界线了。上面的代码就是 master 分支上的,下面的代码是 idea 分支的。解决冲突就是把上面的三行“冲突标示符”都删掉,然后修改代码。之后,回到客户端,点击 2 处的 Commit to Master 。 这样,这次分支合并就完成了,也会生成一个 merge commit 。

合并分支除了融合( merge )还有另外一种形式叫”变基“( rebase )这里暂时用不上,先不管。

团队合作流程

Github 多年来总结出来一套自己的团队协作流程,简单而且强大,叫做 Github Flow ,网站上的各个功能都是围绕着这个流程来开发的。另,中文版的 Github Flow 在这里

要了解一个流程,没有什么比跑一个最简单的实际例子更好的方式了,官方给出的Hello World就是服务于这个目的,不过这个 Hello World 用的是纯粹的网页来实现整个流程。

给队友添加写权限

Settings->collaborator  

开分支并在上面开发

发 Pull Request

PR 在整个 Github Flow 流程中占有核心位置。其实 PR 的目的就是讨论,且整个讨论过程是围绕着实打实的代码。

先到仓库页面,找到发 PR 的大绿按钮

下面图中显示的界面中,看1处,注意一下是拿出哪两个分支来进行对比。2处,我要填写一些内容,解释一下我的修改内容。3处,可以上传图片。同样在这个页面上,滑动到下方还可以看到这次 PR 的具体对比出来的代码内容

点击 Create Pull Request 按钮,这样发 PR 就成功了。

补充一句。实际上,客户端中也可以发 PR,达成的效果跟网页中发是一样的,这里就不演示了。

讨论审核代码

如果代码需要调整,那我现在是不是要撤销这 PR 重新发呢?不用。我只需要继续在分支上改代码然后再同步上来。

快速 PR

走一遍 Github Flow 其实方式并不唯一。前面讨论的,在自己的机器上改代码,用客户端作 commit,然后在网页上发 PR 是一种常见的方式。如果我只是改一个文件中的一个小地方,完全可以使用 github 网页功能提供的快速 PR这种方法。来演示一下。

网页界面中,找到我要修改的文件,点击编辑

在下面的界面中,可以直接填写一个 Topic 分支名,创建这个分支,并 commit 到这个分支上即可发 PR 了

Github issues

Github 上的每个项目仓库,都有三套基础设置可供使用:一个是通过 Github Pages 机制建立项目网站。另外一个就是每个项目都可以开自己的 wiki ,作为项目的知识库。第三个是事务卡片( Issues )。很多比较复杂的项目管理软件会把“报 Bug ”,“提新需求”,“其他讨论”,这些项目相关的内容分成不同的板块来进行,在 Github 这里,所有的内容就都作为事务卡片来统一管理了。

更多 Github 技巧

Git客户端使用教程的更多相关文章

  1. Git git2.8.1客户端安装教程

    Git git2.8.1客户端安装教程 一 Git介绍 git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开 ...

  2. git github 使用教程

    参考文章:文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般 ...

  3. 【git】git简单使用教程

    git的简单使用教程: 1.安装git bash客户端 2.打开git bash,cd到需要存储代码的路径下, 执行:git clone -b deploy ssh://git@gitlab.xxxx ...

  4. Git 相关工具及教程地址

    一.Git GUI 客户端 Git 客户端下载(Windows) TortoiseGit 客户端下载(Windows) Sourcetree 客户端下载(Windows.Mac) Git Extens ...

  5. Coding 账户与 本地 Git 客户端的配置

    1.先创建cooding账户 ,注册地址:https://coding.net/ 2.创建好账户后登陆,在个人设置中  验证邮箱 和 验证手机 (邮箱很重要配置需要用到) 3.安装git 客户端 (在 ...

  6. git新手使用教程包含各种系统

    Git Tutorial 1.下载客户端 从Git官网下载客户端:   https://git-scm.com/   Windows版下载地址:   https://git-scm.com/downl ...

  7. git使用简单教程-(转自linux人)

    什么是Git Git是目前世界上最先进的分布式版本控制系统.最初由Linus Torvalds编写,用作Linux内核代码的管理.如果你是windows用户,看到这里你可能会担心"是不是只能 ...

  8. Git使用详细教程(一)

    很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...

  9. git超详细教程

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...

随机推荐

  1. Spring中实现自定义事件

    原理: 通过扩展ApplicationEvent,创建一个事件类CustomEvent.这个类必须定义一个默认的构造函数,它应该从ApplicationEvent类中继承的构造函数. 一旦定义事件类, ...

  2. Oracle: 通过命令行下载安装文件

    1. 导出oracle cookies 参考:https://blog.pythian.com/how-to-download-oracle-software-using-wget-or-curl/ ...

  3. centos6.5 (linux) 禁用模块 IPV6模块的方法

    装完centos后,默认开启了一些模块.可是有些模块并非我们必须的.比方眼下尚未在中国普及的IPV6 怎样关闭IPV6呢 以下介绍的方法,也能够在关闭其它模块的时候使用 第一步: 查找模块名称 使用命 ...

  4. Deepin-我为什么推荐它!

    针对Win上的开发软件,大部分都需要密匙或者破解,而Deepin不敢说一应俱全,但全沾边是没问题的 无论是编程.娱乐还是其它的,基本上都可以做到,而且它还应用了Crossover来兼容大部分的Win软 ...

  5. POJ1195 Mobile phones 【二维树状数组】

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14288   Accepted: 6642 De ...

  6. codeforces 394E Lightbulb for Minister 简单几何

    题目链接:点我点我 题意:给定n个点. 以下n行给出这n个点坐标. 给定m个点,以下m行给出这m个点坐标. 这m个点是一个凸包,顺时针给出的. 问:在凸包上随意找一个点(x, y) 使得这个点距离n个 ...

  7. 2016/4/1 PDO:: 数据访问抽象层 ? :

    ①PDO方式连接 数据库 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  8. Django初识二

    1,在django中用于提交的form表单中的三要素: 1.1>form标签要有action和method,上传文件需要额外指定的enctype 1.2>获取用户输入的标签要有name属性 ...

  9. 浅谈UML的概念和模型之UML视图

    相信大家都知道UML的全称,统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件系统进行可视化建模的一种语言.UML为面向对象开发系统的产品进行说明.可视化. ...

  10. css3动画应用-音乐唱片旋转播放特效

    css3动画应用-音乐唱片旋转播放特效 核心点: 1.设置图片为圆形居中,使图片一直不停旋转. 2.文字标题(潘玮柏--反转地球)一直从左到右不停循环移动. 3.点击图标,音乐暂停,图片停止旋转:点击 ...