现在的位置: 首页 > 综合 > 正文

Git、GitHub、TortoiseGit ?

2013年05月28日 ⁄ 综合 ⁄ 共 4876字 ⁄ 字号 评论关闭
文章目录

Git、GitHub、TortoiseGit ?

Git是一个开源的分布式版本控制系统,用以有效、高速的处理各种规模的项目版本管理, 它是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,后来得到广泛的使用。

GitHub是提供在线git空间的平台,免费的账号只能使用公开的空间并且需要公布所有原始码,没有其他限制。

TortoiseGit 是 TortoiseSVN的Git版,它很好的实现了与windows资源管理器的融合,使用界面与TortoiseSVN非常类似。
TortoiseGit运行在msysgit(git的windows开源版本)之上,因此,在安装TortoiseGit前需要安装msysgit。

 

GitHub

Github官网:https://github.com/

github是一个git项目托管网站。

 

 

GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或GoogleCode这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最後通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。

 

快速上手

1. 安装msysgit.

下载地址:

http://code.google.com/p/msysgit/

2. 安装最新版的TortoiseGit

 

下载地址:

http://code.google.com/p/tortoisegit/

 

3. 配置TortoiseGit,在Setting-General-Msysgit中指定git.exe为msysgit安装目录下的\bin目录里的git.exe,另外External dll 为msysgit安装目录下的\mingw\bin;
4. 打开TortoiseGit程序组中的Puttygen
5. 鼠标点击"generate",使用鼠标在空间面板中任意活动,产生你的Putty密钥,无需输入key passphrase,然后点击Save private key到本地.
6. 从Puttygen中copy你的公钥,你的公钥是一个位于第一个文本域中的比较大的随机的字母数字串,它看起来如下:
   ssh-rsa
   AAAB3NzaC1yc2EAAAABJQAAAIBqFftopEl3HNQ+SUmh9dFW39+IYU1ZYLG04GU
   Nh02DEbgKn9qaCJDjqCh9a7LO+oN6RjcWLIwaPPlwZI1w6el5WaZKeKEOtWqgQW+
   trnLRijgF9sPRR7jweM13S8lnpSvCUQbPxUyaNHZkEmY2PI1BaANv3d9YGnnhbKXPz
   m0rmQ== rsa-key-20091128
7. 在GitHub中创建一个帐户,导航到Account settings,点击"ssh public keys", 把你在上面产生的公钥增加进去。
 8. 在GitHub中新建一个Repository-"yourproject",进入你的Repository-"yourproject"
9. 从你的Repository-"yourproject"库的主页顶部中,点击copy to clipboard 图标,你的Git地址看起来如下:"git@github.com:yourname/yourproject.git"
10. 在你的硬盘上为这个"yourproject"源码创建一个新目录, 点击右键选择"Git Clone...".
11. 在URL中输入你在第8步中的URL clone地址.
12. 选中"Load Putty Key" ,并选择你在第4步存储的私钥位置。
13. 点击OK即可获取你的项目"yourproject"分支了。

 

日常开发

 

1.Git Commit 提交到本机。

2.Push 提交到GitHub。

 

 

 

Git与SVN

 

Git控制文件全部在项目根目录下,Svn则和文件在同一层目录

Git中一个文件会产生三个版本控制文件,而Svn只产生一个

 

 

Git分支管理

Git的分支管理是Git的神器。拥有了它就会使我么管理代码更加游刃有余。那么什么是Git的分支管理?为什么要使用Git的分支管理?Git分支管理怎么用?
在集中式版本控制中,冲突的合并是可怕的,是令人恶心的。所以很多版本控制软件通过加锁来拒绝多个人同时访问一个文件;而有的版本管理软件,则不是通过加锁的方式,第一个提交的人会很顺畅,但是如果第二个人提交,那么面临它的将是恶心的冲突解决。
而在分布式管理软件中,冲突解决、合并、衍合,则是一种容易的事情,它是版本管理中的常态。
 而合并、衍合的主体就是分支。
分支其实就是指向某种代码状态的一个指针。而合并其实就是将两种代码状态合并到另一种代码状态中。
 在Git中,正确的使用方法中,无处不在使用分支。比如,提交实际上就是本地分支合并到远程分支,更新实际上就是将远程分支合并到本地分支,在开发过程中,每加入一个功能或特性,都加入一个分支,当实验成功后合并到主分支...

为什么要使用分支管理?
我们来设想下面几种情况:1、我们在基于一个稳定的版本在进行开发,突然在稳定版本上有一个紧急的bug需要我们解决。2、我们在软件中加入了一个小的特性,但是开发到一半的时候,发现开发组的另一个的想法更有创意,所以我们想废弃自己的更改。3、自己想在软件中同时加入多个特性,但是希望并行开发开发,而不是依次开发。
如果采用单分支形式的话,以上可能也可以实现,但是实现的复杂度可能就会加大。而应用多分支管理时情况就变的简单了。
如果我们开发新功能时是基于一个新的分支的话,如果稳定版本有一个紧急bug需要处理,那么我们就可以切换到稳定版本的分支,然后修改bug,修改之后,我们再次切换到原先的分支继续工作,最后我们将该分支合并到稳定分支即可。如果我们想废弃正在开发的某个特性,如果该特性在一个单独的分支上,只需要简单的删除该分支即可。如果我们想并行开发多个特性,我们可以创建多个分支,分别开发,然后将每个分支都合并到稳定分支上即可。
多分支管理,我们可以维护一个稳定的分支,然后某些特性或实验性的开发可以单独作为一个分支,这样开发过程就不会影响到稳定的版本。而且Git中分支的创建和切换基本上没有多少消耗。

 Git如何进行分支管理?
1、创建分支
创建分支很简单:git branch <分支名>

2、切换分支
git checkout <分支名>
该语句和上一个语句可以和起来用一个语句表示:git checkout -b <分支名>

3、分支合并
比如,如果要将开发中的分支(develop),合并到稳定分支(master),
首先切换的master分支:git checkout master。
然后执行合并操作:git merge develop。
如果有冲突,会提示你,调用git status查看冲突文件。
解决冲突,然后调用git add或git rm将解决后的文件暂存。
所有冲突解决后,git commit 提交更改。

4、分支衍合
分支衍合和分支合并的差别在于,分支衍合不会保留合并的日志,不留痕迹,而 分支合并则会保留合并的日志。
要将开发中的分支(develop),衍合到稳定分支(master)。
首先切换的master分支:git checkout master。
然后执行衍和操作:git rebase develop。
如果有冲突,会提示你,调用git status查看冲突文件。
解决冲突,然后调用git add或git rm将解决后的文件暂存。
所有冲突解决后,git rebase --continue 提交更改。

5、删除分支
执行git branch -d <分支名>
如果该分支没有合并到主分支会报错,可以用以下命令强制删除git branch -D <分支名>

 

 

 

如何在 GitHub 建立个人主页和项目演示页面

1. GitHub 个人主页
即别人可以通过 http://[用户名].github.com/ 访问到的二级域名页面。这个比较简单,只要在 GitHub 上建立一个名为 [用户名].github.com 的项目,把页面内容通过 Git 工具从本地推送上去即可。首次建立项目可能需要等一会(至多十分钟)才能访问,以后更新内容都可以立即刷新访问。

 

2. GitHub 项目演示页面
即别人可以通过 http://[用户名].github.com/[项目名] 访问到的项目演示页面。这比上一个稍微麻烦一点,需要多建立一个 gh-pages 分支。每次提交项目以后,把更新推送一份到这个分支即可。和个人主页一样,首次建立分支以后需要等一会(至多十分钟)才能访问,以后更新内容都可以立即刷新访问。

因为我们在 GitHub 上建立项目,多数时候都只是做一个在线备份或者简单的分享,并不需要复杂的分支管理,所以时间长了就会觉得要多维护一个分支还是挺费事的。那有没有办法可以只维护一个分支也能够生成演示页面呢?当然是可以的,我们把默认的 master 分支删除,把 gh-pages 当成主分支,只维护这一个分支就好了嘛。

 

 

references

 

TortoiseGit + GitHub 快速上手指南:http://www.cnblogs.com/meetrice/archive/2012/01/18/2325505.html 

GotGitHub:http://www.worldhello.net/gotgithub/

如何在 GitHub 建立个人主页和项目演示页面:http://forcefront.com/2011/build-your-github-pages/

我也说Git分支管理:http://winuxxan.blog.51cto.com/2779763/508955

 Git 系列之一:版本控制的概念、分布式、Git 简介及其工作流程:http://wangcongming.info/2010/07/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E7%9A%84%E6%A6%82%E5%BF%B5%E3%80%81%E5%88%86%E5%B8%83%E5%BC%8F%E3%80%81git-%E7%AE%80%E4%BB%8B%E5%8F%8A%E5%85%B6%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B/
Git 系列之二:Windows 下 Git 客户端的选择,及 msysGit 各种中文问题的解决:http://wangcongming.info/2010/07/windows-%E4%B8%8B-git-%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%9A%84%E9%80%89%E6%8B%A9%EF%BC%8C%E5%8F%8A-msysgit-%E5%90%84%E7%A7%8D%E4%B8%AD%E6%96%87%E9%97%AE%E9%A2%98%E7%9A%84%E8%A7%A3%E5%86%B3/

Git 系列之三:Windows 下 Git 配置与使用指南:http://wangcongming.info/2010/07/git-%E7%B3%BB%E5%88%97%E4%B9%8B%E4%B8%89%EF%BC%9Awindows-%E4%B8%8B-git-%E9%85%8D%E7%BD%AE%E4%B8%8E%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/

Git 系列之四:Git 进阶功能:http://wangcongming.info/2010/07/git-%E7%B3%BB%E5%88%97%E4%B9%8B%E5%9B%9B%EF%BC%9Agit-%E8%BF%9B%E9%98%B6%E5%8A%9F%E8%83%BD/

 

 

抱歉!评论已关闭.