Skip to content

Instantly share code, notes, and snippets.

@sivagao
Created November 10, 2012 00:57
Show Gist options
  • Save sivagao/4049320 to your computer and use it in GitHub Desktop.
Save sivagao/4049320 to your computer and use it in GitHub Desktop.
== 克隆周边 ==
在较老的版本控制系统中,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