Git入门(二)——没有版本控制意识的程序员不是一个好的程序员

本篇所谈的内容均是客户端Git的使用,以windows平台为例。
下载地址:
https://windows.github.com/
https://mac.github.com/
安装完成后会有一个GitHub和Git Shell。GitHub是图形界面模式,Git Shell是命令行模式

三、创建仓库以及文件的简单操作

1. 创建仓库

Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第1张图片
当点击”Create Repository”之后可能会报”An error occurred while creating the repository.You might need to open a shell and debug the state of this repo.”的错误,如下:
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第2张图片
我在Stack Overflow上看到的相似问题是要delete调.git的文件夹,但是我尝试了没有解决,不过奇怪的是,虽然报错了,但是依旧还是创建了该Repository。因此,你可以通过这种方法处理:直接忽略掉”Failed to …”,切换到Add(可能需要重启Git才能进行Add),然后Browse选中相应的Repository即可。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第3张图片
添加成功后如下:
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第4张图片
几个选项的说明:
- Add:本地已经有项目了,输入该项目的路径。
- Create:创建一个项目并存放在指定路径
- Clone:将GitHub上的项目下载到本地

2. 关于添加项目(Add)再介绍

找到存放该仓库的文件夹(可以看到Github的仓库里都有.git 文件夹和配置文件),然后将项目复制到该文件夹下,就会在GitHub客户端出该项目。可以选择自己的编译器来编辑该项目,只要没被commit成一个版本就可以一直编辑。
例如将c语言文件写在创建的Repository里,然再利用C语言的IDE来进行编辑调试。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第5张图片
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第6张图片
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第7张图片

3. 编辑项目

Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第8张图片
可以像上面那样用IDE编辑也可以直接双击打开后编辑

4. Commit

Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第9张图片
- 勾选框是用来选择需要commit的文件,选中的文件的修改会被做到下一个版本中。如下:
这里写图片描述
- 蓝色为需要commit的部分,选中的代码部分的修改会被做到下一个版本中。如下:
这里写图片描述

5. 发布与撤销

到上述commit为止,项目其实还并没有同步到Github上。进入到如下界面:
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第10张图片
- Publish:进行项目发布
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第11张图片
发布之后就阔以在Github平台上看到Git刚发布的项目了,如下:
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第12张图片
- Undo most recent commit:撤销还没有发布的版本。由于我刚才已经发布了,所以此处按钮变灰了。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第13张图片
-Revert:撤销已经发布的版本。

四、分支与合并

1. 分支的实现原理

每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。分为如下几种情况:
(1) 只有一个主分支(master分支):master指针移动
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第14张图片
HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
(2) 创建新的分支(Master指针不变,新指针移动)
这里写图片描述
假设创建了一个idea新分支,Git会新建一个idea指针,跟master指针指向同一个版本,并不是拷贝历史线。同时,再把HEAD指向idea,就表示当前分支在idea上。不过,从现在开始,对工作区的修改和提交就是针对idea分支了,比如新提交一次后,idea指针往前移动一步,而master指针不变。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第15张图片
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。开发新代码又不想污染主分支(Master)这时候就需要创建分支。Master上的代码是随时可以放到服务器上运行的,所以测试性的代码不能放在其上。

2. 创建、切换、发布、删除分支

理论讲了那么多,现在来看看实际的操作。(PS:前几天没网,一直拖到了今天才写的)
(1) 创建分支
选择一个主干然后创建分支。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第16张图片
(2) 发布分支
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第17张图片
发布之后可以看到Github上有两个分支
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第18张图片
(3) 删除分支
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第19张图片
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第20张图片
这段英文提示很简单,下一步的操作我就不做说明了。同样的,删除也可以在远端GitHub网站上实现。
(4) 同步操作
这里写图片描述
这里可以将Github的内容同步到本地。

3. 合并分支

真正在服务器上运行的是master分支,所以创建的分支还是得合并到master分支上。
假如我们在dev上的工作完成了,就可以把dev合并到master上。最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第21张图片
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。
Git入门(二)——没有版本控制意识的程序员不是一个好的程序员_第22张图片
合并分支又分为合并本地分支和合并远端的分支,同时可能要解决冲突问题。在后面的团队合作开发中要谈到的。

————————》》》》》》———无聊分割线—————》》》》》》——————–

这篇blog因为没网和其他原因导致拖了快一个星期,还有利用Git进行”团队协作开发”没有介绍,将在下一篇进行介绍,这也是最重要的一部分。下一篇主要进行“团队协作开发和合并分支”的介绍。我先把这篇发了吧。

你可能感兴趣的:(闲谈)