Git入门(二)——没有版本控制意识的程序员不是一个好的程序员
2016-07-05 23:38
537 查看
本篇所谈的内容均是客户端Git的使用,以windows平台为例。
下载地址:
https://windows.github.com/
https://mac.github.com/
安装完成后会有一个GitHub和Git Shell。GitHub是图形界面模式,Git Shell是命令行模式
当点击”Create Repository”之后可能会报”An error occurred while creating the repository.You might need to open a shell and debug the state of this repo.”的错误,如下:
我在Stack Overflow上看到的相似问题是要delete调.git的文件夹,但是我尝试了没有解决,不过奇怪的是,虽然报错了,但是依旧还是创建了该Repository。因此,你可以通过这种方法处理:直接忽略掉”Failed to …”,切换到Add(可能需要重启Git才能进行Add),然后Browse选中相应的Repository即可。
添加成功后如下:
几个选项的说明:
- Add:本地已经有项目了,输入该项目的路径。
- Create:创建一个项目并存放在指定路径
- Clone:将GitHub上的项目下载到本地
例如将c语言文件写在创建的Repository里,然再利用C语言的IDE来进行编辑调试。
可以像上面那样用IDE编辑也可以直接双击打开后编辑
- 勾选框是用来选择需要commit的文件,选中的文件的修改会被做到下一个版本中。如下:
- 蓝色为需要commit的部分,选中的代码部分的修改会被做到下一个版本中。如下:
- Publish:进行项目发布
发布之后就阔以在Github平台上看到Git刚发布的项目了,如下:
- Undo most recent commit:撤销还没有发布的版本。由于我刚才已经发布了,所以此处按钮变灰了。
-Revert:撤销已经发布的版本。
(1) 只有一个主分支(master分支):master指针移动
HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
(2) 创建新的分支(Master指针不变,新指针移动)
假设创建了一个idea新分支,Git会新建一个idea指针,跟master指针指向同一个版本,并不是拷贝历史线。同时,再把HEAD指向idea,就表示当前分支在idea上。不过,从现在开始,对工作区的修改和提交就是针对idea分支了,比如新提交一次后,idea指针往前移动一步,而master指针不变。
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。开发新代码又不想污染主分支(Master)这时候就需要创建分支。Master上的代码是随时可以放到服务器上运行的,所以测试性的代码不能放在其上。
(1) 创建分支
选择一个主干然后创建分支。
(2) 发布分支
发布之后可以看到Github上有两个分支
(3) 删除分支
这段英文提示很简单,下一步的操作我就不做说明了。同样的,删除也可以在远端GitHub网站上实现。
(4) 同步操作
这里可以将Github的内容同步到本地。
假如我们在dev上的工作完成了,就可以把dev合并到master上。最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。
合并分支又分为合并本地分支和合并远端的分支,同时可能要解决冲突问题。在后面的团队合作开发中要谈到的。
————————》》》》》》———无聊分割线—————》》》》》》——————–
这篇blog因为没网和其他原因导致拖了快一个星期,还有利用Git进行”团队协作开发”没有介绍,将在下一篇进行介绍,这也是最重要的一部分。下一篇主要进行“团队协作开发和合并分支”的介绍。我先把这篇发了吧。
下载地址:
https://windows.github.com/
https://mac.github.com/
安装完成后会有一个GitHub和Git Shell。GitHub是图形界面模式,Git Shell是命令行模式
三、创建仓库以及文件的简单操作
1. 创建仓库
当点击”Create Repository”之后可能会报”An error occurred while creating the repository.You might need to open a shell and debug the state of this repo.”的错误,如下:
我在Stack Overflow上看到的相似问题是要delete调.git的文件夹,但是我尝试了没有解决,不过奇怪的是,虽然报错了,但是依旧还是创建了该Repository。因此,你可以通过这种方法处理:直接忽略掉”Failed to …”,切换到Add(可能需要重启Git才能进行Add),然后Browse选中相应的Repository即可。
添加成功后如下:
几个选项的说明:
- Add:本地已经有项目了,输入该项目的路径。
- Create:创建一个项目并存放在指定路径
- Clone:将GitHub上的项目下载到本地
2. 关于添加项目(Add)再介绍
找到存放该仓库的文件夹(可以看到Github的仓库里都有.git 文件夹和配置文件),然后将项目复制到该文件夹下,就会在GitHub客户端出该项目。可以选择自己的编译器来编辑该项目,只要没被commit成一个版本就可以一直编辑。例如将c语言文件写在创建的Repository里,然再利用C语言的IDE来进行编辑调试。
3. 编辑项目
可以像上面那样用IDE编辑也可以直接双击打开后编辑
4. Commit
- 勾选框是用来选择需要commit的文件,选中的文件的修改会被做到下一个版本中。如下:
- 蓝色为需要commit的部分,选中的代码部分的修改会被做到下一个版本中。如下:
5. 发布与撤销
到上述commit为止,项目其实还并没有同步到Github上。进入到如下界面:- Publish:进行项目发布
发布之后就阔以在Github平台上看到Git刚发布的项目了,如下:
- Undo most recent commit:撤销还没有发布的版本。由于我刚才已经发布了,所以此处按钮变灰了。
-Revert:撤销已经发布的版本。
四、分支与合并
1. 分支的实现原理
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。分为如下几种情况:(1) 只有一个主分支(master分支):master指针移动
HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
(2) 创建新的分支(Master指针不变,新指针移动)
假设创建了一个idea新分支,Git会新建一个idea指针,跟master指针指向同一个版本,并不是拷贝历史线。同时,再把HEAD指向idea,就表示当前分支在idea上。不过,从现在开始,对工作区的修改和提交就是针对idea分支了,比如新提交一次后,idea指针往前移动一步,而master指针不变。
你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。开发新代码又不想污染主分支(Master)这时候就需要创建分支。Master上的代码是随时可以放到服务器上运行的,所以测试性的代码不能放在其上。
2. 创建、切换、发布、删除分支
理论讲了那么多,现在来看看实际的操作。(PS:前几天没网,一直拖到了今天才写的)(1) 创建分支
选择一个主干然后创建分支。
(2) 发布分支
发布之后可以看到Github上有两个分支
(3) 删除分支
这段英文提示很简单,下一步的操作我就不做说明了。同样的,删除也可以在远端GitHub网站上实现。
(4) 同步操作
这里可以将Github的内容同步到本地。
3. 合并分支
真正在服务器上运行的是master分支,所以创建的分支还是得合并到master分支上。假如我们在dev上的工作完成了,就可以把dev合并到master上。最简单的方法,就是直接把master指向dev的当前提交,就完成了合并。
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。
合并分支又分为合并本地分支和合并远端的分支,同时可能要解决冲突问题。在后面的团队合作开发中要谈到的。
————————》》》》》》———无聊分割线—————》》》》》》——————–
这篇blog因为没网和其他原因导致拖了快一个星期,还有利用Git进行”团队协作开发”没有介绍,将在下一篇进行介绍,这也是最重要的一部分。下一篇主要进行“团队协作开发和合并分支”的介绍。我先把这篇发了吧。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- 简单谈谈node.js 版本控制 nvm和 n
- 两分钟学会如何在github托管代码
- VSS 软件配置管理 版本控制第1/2页
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- 使用svn进行版本控制
- Android自定义View实现仿GitHub的提交活跃表格
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)