Created
November 10, 2012 00:57
-
-
Save sivagao/4049320 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
== 克隆周边 == | |
在较老的版本控制系统中,checkout是获取文件的标准操作。你讲获取一组特定保存状态的文件。 | |
在git等其他分布式控制系统中,clone是标准的操作。 | |
=== 计算机间同步 === | |
我可以忍受制作tar包或利用rsync来作备份和基本同步。但我有时在我笔记本上编辑,其他时间在台式机上,而且这俩之间也许并不交互。 | |
在一个机器上初始化一个Git仓库并提交你的文件。然后转到另一台机器上: | |
$ git clone other.computer:/path/to/files | |
以创建这些文件和Git仓库的第二个拷贝。从现在开始, | |
$ git commit -a | |
$ git pull other.computer:/path/to/files HEAD | |
将把另一台机器上特定状态的文件“拉”到你正工作的机器上。如果你最近对同一个文件做了有冲突的修改,Git将通知你,而你也应该在解决冲突之后再次提交。 | |
=== 典型源码控制 === | |
为你的文件初始化Git仓库: | |
$ git init | |
$ git add . | |
$ git commit -m "Initial commit" | |
在中心服务器,在某个目录初始化一个“裸仓库”: | |
$ mkdir proj.git | |
$ cd proj.git | |
$ git init --bare | |
$ touch proj.git/git-daemon-export-ok | |
如需要的话,启动Git守护进程: | |
$ git daemon --detach # 它也许已经在运行了 | |
对一些Git伺服服务,按照其指导来初始化空Git仓库。一般是在网页上填一个表单。 | |
把你的项目“推”到中心服务器: | |
$ git push central.server/path/to/proj.git HEAD | |
捡出源码,可以键入: | |
$ git clone central.server/path/to/proj.git | |
做了改动之后,开发保存变更到本地: | |
$ git commit -a | |
将其中的一台开发机更新到中心服务器保持的最近版本: | |
$ git pull | |
所有冲突应被处理,然后提交,缓到本地的stage上: | |
$ git commit -a | |
把本地改动捡入push到中心仓库: | |
$ git push | |
如果主服务器由于其他开发的活动,有了新的变更,这个捡入会失败,该开发应该把最新版本拿下来,解决合并冲突,然后重试。 | |
为使用上面pull和push命令,开发必须有SSH访问权限。不过,通过键入以下命令,任何人都可以看到源码: | |
$ git clone git://central.server/path/to/proj.git #注意是由git://前缀的 | |
本地git协议和HTTP类似:并无安全验证,因此任何人都能拿到项目。因此,默认情况git协议禁止推操作。 | |
=== 封闭源码 === | |
闭源项目不要执行touch命令,并确保你从未创建`git-daemon-export-ok`文件。资源库 | |
不再可以通过git协议获取;只有那些有SSH访问权限的人才能看到。如果你所有的资源 | |
库都是封闭的,那也没必要运行运行git守护daemon了,因为所有沟通都走SSH。 | |
=== 裸仓库 === | |
裸仓库扮演的角色和中心版本控制系统中中心服务器的角色类似:你项目的中心。开发从其中克隆项目,捡入新近改动。典型地裸仓库存在一个服务器上,该服务器除了分散数据外并不做啥。开发活动发生在克隆上,因此中心仓库没有工作目录也行。 | |
=== 推还是拽 === | |
=== 项目分叉 === | |
=== 终极备份 === | |
=== 轻松多任务 === | |
=== 游击版本控制 === | |
=== Bazaar === | |
=== Mercurial === | |
=== 我偏爱git的原因 === | |
它能管理复杂如Linux内核源码。没离开的必要。还有,我偏爱C程序和bash脚本,以及诸如Python的可执行可脚本:较少依赖,并且我也沉迷于快速的执行时间。 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment