Windows下Git与TortoiseGit使用教程(Github为例)(四)

正式开始

建立github仓库 

建立仓库的操作需要在网站上进行。我们通常是在服务器上建立仓库(repository),然后克隆(clone)到本地。如果你想在本地直接建立仓库(init),那么通常是本地的单人代码库,或者是局域网内部共享的库,或者你就是代码服务器的管理员。

Github上建立仓库的操作很简单,打开网站,右上角右数第三个按钮就是了(看图)。你只需要输入项目名字,以及建立“.gitignore”文件就行。这个文件其实就是我们明确指明不需要版本跟踪的文件,上文已经提到过了。通常这个文件是我们自己写的,但是github已经为我们的各种常见项目提供了现成的样板,更加方便。


一般不会有什么问题,你填写完之后“create repository”就行了,我们会看到这样的页面:


这样就创建成功了。可以看到,现在初始的库中,有一个master分支,并且有了一次commit,作为初始化的操作。你也可以在本地建立仓库查看,其实是一样的。不过我们通常不在本地建立仓库,如果你需要协同开发的话,因为你不能让服务器去克隆你电脑上的仓库,只能是你去克隆服务器的仓库。当然了,如果你不打算用服务器的话,那是另外一回事了。

 

可以看到上面有项目的三种协议的地址:http,ssh,以及git协议的。这三种协议各有优缺点,都是指向同一个项目的。你还可以下载zip压缩包,或者用github的windows客户端进行方便的克隆。这个客户端做的不错,不过它只能用在github上面,其他的代码托管平台不能用,这个就不好了。我们还是用msysgit+tortoisegit的方式,对命令行熟悉的童鞋可以考虑直接上命令行啦。又扯开去了,不说了。

 

克隆仓库到本地

我们用ssh的协议为例。ssh的仓库地址大概是长这个样子:

[email protected]:jarelzhou/testproject.git

在你想要放本地仓库的地方,右键,git clone…

据说本地仓库不建议放在eclipse的workspace中,不知为何。题外话了,这样可能会造成项目间的混乱。

右键之后,看到这样的界面,url中填写之前github提供的ssh地址,putty key记得选择之前我们创建的private key。

 

然后会要你输入passphrase,这也是之前设置好的:


创建中:

    

 

然后是这个警告窗口,这个窗口只会出现一次,以后就不会有了,这是要你核对sshkey的,你可以核对一下:


如果没错的话,点“Yes”就行了。过了一小会儿,会出来提示成功:


这个关掉就可以了。

此时仓库信息中已经有了原本仓库的位置了,不再需要额外的设置。

 

有没有看到,仓库已经克隆下来啦?被版本控制的目录会打上绿勾,如果没有的话你可以刷新一下看看,windows的图标缓存有bug,而且至今没有解决,刷新如果还没有的话可能得注销一下了。

 

做一些改动

我们现在来尝试给这个测试的项目添一点东西。比如添加一个main.cpp:


保存之后看到目录变成了这个样子:


发现有一个~结尾的存档文件,不应该被跟踪的。右键文件,选择ignore即可。添加到忽略列表之后,你再刷新,就可以看到,main.cpp~这个文件上的图标消失了。

 

而main.cpp这个文件是我们要添加到控制中的。右键,Tortoisegit-》add,它就从未跟踪状态到被跟踪状态,而且是被添加到了stage中。

有一种说法,.gitignore本身也应该被忽略,不过这样的话可能大家添加的文件不一致,所以我们还是不忽略了。

 

这个时候,我们来commit一下,记录到本地版本库中。右键,commit即可。注意,git要求每次commit必须输入描述信息。

 

点OK就可以了。此时目录中所有文件又变成了绿勾的状态。

 

推送到服务器端

我们已经在本地做了修改,并commit到了本地的库。Git不允许直接commit到远程库,只允许两个库之间的同步操作,而没有commit的修改,是没有记录到仓库中的。现在,我们来推送(push)到服务器端。

仍旧是强大的右键……tortoisegit把几乎全部的操作放到了右键菜单中去。选择push:


点OK就行了。然后又是一个乌龟翻跟斗的动画:


推送完了之后,关掉这个窗口就行了。

现在我们回到github的网站,刷新一下,看看,是不是文件被推送上去啦?


除此之外,还有pull操作,是从服务器端拉取最新的版本库,因为可能项目组的其他成员已经做了修改,你需要把其他人的改动同步下来。

 

分支操作

我们现在只有一个分支,更合理的设置是两个常设分支,然后按需出现的临时分支。建立分支的方法:右键,create branch,设置好这个分支是从哪个状态分叉出来的,默认是当前的工作状态,你也可以设成其他的。切换工作分支是checkout/switch。

在同步的时候,我们通常是每个分支单独同步的,你需要推送什么分支,就选择哪个分支,不要推送错了。Pull的时候,也是这样。Tortoisegit提供了拉取/推送全部分支的选项,不过你在做这个操作之前,必须要清楚你在做什么。

 

最后

写到这里,windows下tortoisegit的大概操作就说完了。你可以发现,我其实并没有过多地去描述tortoisegit怎么操作,我更多的是在讲,git的设计,以及一种比较清晰的工作流程。这种工作流程不仅仅是tortoisegit,这在你用命令行的git,甚至是其他的版本控制系统,都是差不多的。工具不重要,重要的是如何去用工具提高我们的效率。

 

写这篇文章到最后,我也把整个的过程理了一遍,对git也有了更深的理解。还是写下来比较清楚。



本文档完整版PDF版本下载:http://download.csdn.net/detail/jarelzhou/7074985


你可能感兴趣的:(Git)