GitHub版本控制入门(新手学习)
要使用GitHub功能,首先要登陆官方网站https://github.com,注册GitHub账号。

在浏览器中的操作:
新建一个仓库。一个项目一旦被Git控制了版本历史,在GitHub上就有另外一个名字叫仓库。


注意:GitHub上的每一个项目的名字都是在自己的用户名之下的,所以不用担心会跟其他人的项目重名,只要自己的用户名之下没有该项目即可。添加项目描述,private功能是收费的。点击创建按钮,项目就创建成功了。此时github页面跳转到https://github.com/用户名/项目名,即新创建的项目的主页。
Commit动词表示做一个版本,名词则表示版本的意思。






很多时候代码是要在本地写的,因为本地有自己最喜欢的编辑器,有编译和调试的环境,操作起来比较高效,在本地可以通过安装Git,通过命令行操作,相对复杂,对于新手来说,可以使用图形化的客户端进行本地的相关操作。根据对应的系统去下载对应的客户端。这里以Windows客户端为例。

如果官网下载安装的速度太慢,可以参考网上的其他离线版下载安装。安装完成后登陆自己的GitHub账号,并按照向导做一些简单的配置即可。
在客户端的操作:
客户端添加项目
点击“+”,有3种方式:

Add:添加本地已经存在的项目,输入路径即可;
Create:新建一个项目,输入项目名称,选择一个保存路径即可;
Clone:把远程GitHub网站上的项目克隆到本地
以Create方式为例:

在本地编辑器中打开新建的项目,新建文件hello

返回GitHub客户端,会看到如下的变化

撤销做过的版本,点击版本列表中的版本,然后在设置中选择“Undo most recent commit”

由于是在本地新建的项目,在GitHub网站上没有该项目,所有此时是“publish”功能,当把项目发布到网站上后,此处的按钮就会变成Sync(同步)。


项目同步成功后,登录GitHub网站,可以看到图示的项目

分支
分支在底层的实现原理



一般开新分支的目的是:有新的想法需要开发新的代码,但是又不想污染到master分支上的很重要的代码。原则上是master分支上代码都应该是随时可以放到服务器上去当产品跑的代码,测试性的代码不能放在master分支上。
在客户端新建和删除分支

新创建的分支会自动作为当前分支


在master分支和new分支之间切换时会发现,本地工作目录中的文件也会发生变化,把master分支作为当前分支时,工作目录中没有good文件,切换到new分支时,工作目录中又出现了good文件。


把新分支发布到GitHub网站上之后,查看网站上的分支,结果如下。



网站上新建和删除分支



合并分支




本地仓库的master分支和远端网站上的仓库的master分支,虽然名字相同,但是处在不同的仓库之中(一个在本地的仓库,一个在远端的仓库),可以存在并行开发的情况。
在本地的master分支上做了新的commit

在网站上的master分支上也做了一个commit,此时客户端和远端还没有同步。

客户端和远端的修改互不影响


代码冲突



<<<<<<< HEAD
=======
>>>>>>> origin/master
称为冲突标识符。
<<<<<<<HEAD 是代表当前分支,===== 就是两个冲突代码块的分界线了,>>>>>>> origin/master代表另外一个分支,此处指远端的master分支

此处冲突的本质可以理解为时程序员的意见不统一造成的,不是Git能直接解决的问题,需要开发者之间商量,最后达成一致。解决冲突就是把上面的三行“冲突标示符”都删掉,然后修改代码,之后回到客户端,做新版本,重新合并分支。



更多详细内容请参考happypeter老师的http://gitbeijing.com/讲解。
GitHub版本控制入门(新手学习)的更多相关文章
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)
简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- 适合 Go 新手学习的开源项目——在 GitHub 学编程
作者:HelloGitHub-小鱼干&卤蛋 故事要从 2007 年说起.因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 ...
- 适合 JS 新手学习的开源项目——在 GitHub 学编程
作者:HelloGitHub-小鱼干 这里是 HelloGitHub 的<GitHub 上适合新手的开源项目>系列的最后一篇,系列文章: C++ 篇 Python 篇 Go 篇 Java ...
- Sql Server新手学习入门
Sql Server新手学习入门 http://www.tudou.com/home/_117459337
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...
- Webpack新手入门教程(学习笔记)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } ...
- nodeJs 5.0.0 安装配置与nodeJs入门例子学习
新手学习笔记,高手请自动略过 安装可以先看这篇:http://blog.csdn.net/bushizhuanjia/article/details/7915017 1.首先到官网去下载exe,或者m ...
随机推荐
- arch/arm/Makefile:382: recipe for target 'kernel.img' failed
/********************************************************************** * arch/arm/Makefile:382: rec ...
- 【机器学习基础】SVM实现分类识别及参数调优(二)
前言 实现分类可以使用SVM方法,但是需要人工调参,具体过程请参考here,这个比较麻烦,小鹅不喜欢麻烦,正好看到SVM可以自动调优,甚好! 注意 1.reshape的使用: https://docs ...
- C语音,关于可变参数的宏定义
typedef char * va_list; // TC中定义为void* //为了满足需要内存对齐的系统 #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int) ...
- Unity3d mesh合并,网格合并具体用法教程
Unity开发Mesh合并网格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- django 浅谈CSRF(Cross-site request forgery)跨站请求伪造
浅谈CSRF(Cross-site request forgery)跨站请求伪造(写的非常好) 本文目录 一 CSRF是什么 二 CSRF攻击原理 三 CSRF攻击防范 回到目录 一 CSRF是什么 ...
- PHP黑魔法(该篇文章转自:http://www.91ri.org/12634.html 目的是作为自己的笔记方便查找)
那些年我们学过的PHP黑魔法 作者:Matrix_ling 序 这里必须得说一下==和===这俩货的重要性.==是比较运算,它不会去检查条件式的表达式的类型===是恒等,它会检查查表达式的值与类型是否 ...
- java 调用process
java调用process 有两种实现方法,一是使用Runtime类,二是使用Process类. 我在最近的项目里用的是Runtime类,接下来写下总结. 有图有真相(在网上学来一句话) packag ...
- Mybatis(二,三)
参考孤傲苍狼的博客,地址如下: http://www.cnblogs.com/xdp-gacl/p/4264301.html 在此声明,自己写博客,是为了学习总结过程中的记录.没有侵权和偷懒的意思. ...
- 【maven】maven查看项目依赖并解决依赖冲突的问题
一.问题 项目开发过程中,经常会遇到jar冲突,然后maven根据自己的规则进行冲突解决,导致项目在运行的过程中报错. 1.maven自动解决依赖冲突的规则是什么? 2.如何查看当前项目的maven的 ...
- 找工作String类(重点,背诵)(本质是一个类)
一个顶层设计者眼中只有2个东西接口,类(属性,方法) 无论String 类 , HashMap实现类 , Map接口 String str = "Hello" ; // 定义 ...