TortoiseGit + GitHub 使用指南

来源:互联网 发布:淘宝规则最新 编辑:程序博客网 时间:2024/05/22 11:57

 

关于Git

Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状态可以是不同的文件,也可以是不同的文件内容。举个例子,你可以将文件集合转换到两天之前的状态,或者你可以在生产代码和实验性质的代码之间进行切换。文件集合往往被称作是“源代码”。在一个分布版本控制系统中,每个人都有一份完整的源代码(包括源代码所有的历史记录信息),而且可以对这个本地的数据进行操作。分布版本控制系统不需要一个集中式的代码仓库。 

当你对本地的源代码进行了修改,你可以标注他们跟下一个版本相关(将他们加到index中),然后提交到仓库中来(commit)。Git保存了所有的版本信息,所以你可以转换你的源代码到任何的历史版本。你可以对本地的仓库进行代码的提交,然后与其他的仓库进行同步。你可以使用Git来进行仓库的克隆(clone)操作,完整的复制一个已有的仓库。仓库的所有者可以通过push操作(推送变更到别处的仓库)或者Pull操作(从别处的仓库拉取变更)来同步变更。 

Git支持分支功能(branch)。如果你想开发一个新的产品功能,你可以建立一个分支,对这个分支的进行修改,而不至于会影响到主支上的代码。  

Git提供了命令行工具;这个教程会使用命令行。你也可以找到图形工具,譬如与Eclipse配套的EGit工具,但是这些都不会在这个教程中进行描述。  

 

术语解释:

仓库 :一个仓库包括了所有的版本信息、所有的分支和标记信息.  

Repository   : 在Git中仓库的每份拷贝都是完整的。仓库让你可以从中   取得你的工作副本。  

分支:一个分支意味着一个独立的、拥有自己历史信息的代码线  ,你可以从已有的代码中生成一个新的分支   Branches   ,这个分支与剩余的分支完全独立。默认的分支往往是叫   master。用户可以选择一个分支,选择一个分支叫做   checkout   标记  一个标记指的是某个分支某个特定时间点的状态。通过标  记Tags,可以很方便的切换到标记时的状态,例如2009年1月25   号在testing分支上的代码状态 

提交  :提交代码后,仓库会创建一个新的版本。这个版本可以在   Commit   后续被重新获得。每次提交都包括作者和提交者,作者和   提交者可以是不同的人 

URL   :URl用来标识一个仓库的位置   用来表示代码的一个版本状态。Git通过用SHA1 hash算法  

修订 :   表示的id来标识不同的版本。每一个 SHA1 id都是160位长   Revision   ,16进制标识的字符串.最新的版本可以通过HEAD来获取.   之前的版本可以通过"HEAD~1"来获取,以此类推。


索引 :Git 需要将代码的变化显示的与下一次提交进行关联。举个例子,如果你对一个文件继续了修改,然后想将这些修改提交到下一次提交中,你必须将这个文件提交到索引中,通过git add file命令。这样索引可以保存所有变化的快照。 

新增的文件总是要显示的添加到索引中来。对于那些之前已经提交过的文件,可以在commit命令中使用-a 选项达到提交到索引的目的。  


1.3 Git操作的相关操作  

后续将通过一个典型的Git工作流来学习。在这个过程中,你会使用SourceTree创建一些文件、创建一个本地的Git仓库、提交你的文件到这个仓库中。这之后,你会克隆一个仓库、在仓库之间通过pull和push操作来交换代码的修改。 

1.3.1 创建仓库、添加文件和提交更改       

每个Git仓库都是放置在.git文件夹下.这个目录包含了仓库的所有历史记录,.git/config文件包含了仓库的本地配置。  

以下我们会创建一个本地Git工程仓库。将工程添加入SourceTree进行管理。  

一个本地工程已经添加进来了。  

点击进入工程:  

1.3.2 commit更改       

下方有问号的就是我们的工程文件,现在我们将他们添加到Git仓库内。全选他们,点击Commit键。  

Commit成功后,出现一条记录和描述。  

1.4 远端仓库(remote repositories)       

1.4.1 设置一个远端的GitHub仓库       

我们将创建一个远端的GitHub仓库。这个仓库可以存储在本地或者是网络上。  

远端Git仓库和标准的Git仓库有如下差别:一个标准的Git仓库包括了源代码和历史信息记录。我们可以直接在这个基础上修改代码,因为它已经包含了一个工作副本。但是远端仓库没有包括工作副本,只包括了历史信息。 

1.4.2 添加远端仓库       

首先我们需要创建一个CMS.Web的仓库;

   
           
填写工程信息:  

创建完成后,Clone此工程下来,复制此工程的URL:

 

要将带? 号的文件先添加到索引中去,这样才能被SourceTree 跟踪。

 

   

在推送前,需要 先提交,就是保存

 

录屏太麻烦了,写的速度也减慢了不少,不录了
       
1.4.3 推送更改到GitHub的仓库       
在下方的Origin中,显示的是GitHub服务器上的工程,它显示的进度还在第一条Initial commit;这时我们需要将本地master中的更改Push到GitHub服务器。 
提交成功后,我们看到服务器端的进度已经和我们本地同步了。  

1.4.4 拉取(Pull)更改       

通过拉取,可以从GitHub的仓库中获取最新的更改。  

1.4.5 还原更改       

如果你还未把更改加入到索引中,你也可以直接还原所有的更改;也可以通过revert命令进行还原操作 。   即使你删除了一个未添加到索引和提交的文件,你也可以还原出这个文件,点击Checkout。   如果你已经添加一个文件到索引中,但是未提交。可以通过git resetfile 命令将这个文件从索引中删除。  

1.5 分支、合并       

1.5.1 分支       

通过分支,可以创造独立的代码副本。默认的分支叫master。Git消耗很少的资源就能创建分支。Git鼓励开发人员多使用分支。  

1.5.2 合并       

通过Merge我们可以合并两个不同分支的结果。Merge通过所谓的三路合并来完成。分别来自两个分支的最新commit和两个分支的最新公共commit。      但是有时多人开发时,有可能会发生合并冲突。  一旦合并发生了冲突,Git会标志出来,开发人员需要手工的去解决这些冲突。解决冲突以后,就可以将文件添加到索引中,然后提交更改。  

1.5.3 合并请求(pull Requests)一个分支到源仓库       

我们在Github上Fork的项目,当一个人完成开发后,需要提出一个合并请求,请求把自己写的部分与主项目合并。  

在Github上的自己Fork的工程右边点击Pull Requests,点击New pull request。  

  这里会比较你和主项目的不同,然后点击创建pull request。  

  这里写入你要合并部分的介绍,完成了什么功能等等,点击发送。  

项目拥有者收到你的请求,根据你完成的功能,和你沟通后可以选择合并或者否决你的请求。  
合并需要手工完成,具体请向度娘了解。  

1.6 解决合并冲突       

如果两个不同的开发人员对同一个文件进行了修改,那么合并冲突就会发生。而Git没有智能到自动解决合并两个修改。  

1.7 链接和文章       

1.  Git相关学习资源              

Github                      www.github.com             

SourceTree出的Git教程:      www.atlassian.com/git              

某个台湾人写的Git教程:      http://pan.baidu.com/s/1eQBUIe2             

一些GitHub资料:      http://pan.baidu.com/s/1qW8m5fY               

相关的资源请参考:http://www.bootcss.com/p/git-guide/


 

 

0 0
原创粉丝点击