很多人抱怨 Git 难学难用,特别是和 svn 相对。看 cmd line 也古怪的很,透着不舒服,就像毕加索的画
然而,有人用 300 行的 js 代码就可以完成 git 的主干功能,看起来,一定是我们那里理解错了。
关键是要明白,分布式开发,是有多份仓库的,每个仓库都是一个 svn,操作和 svn 也大同小异。在此之外,还需要考虑仓库之间的同步。这就是 svn 所没有的东西了。
以下内容就从 workshop 开始,帮助理解 git。
就 4 个步骤照做。
建立仓库
- 首先保证有一个目录叫做 alpha
- 执行
git init
将这个 alpha 文件夹初始化为 Git 仓库 - 执行
git add number.txt
会将number.txt
添加到 Git 的索引(index)中,这个索引记录了所有 Git 保持追踪的文件 - 执行
git commit -m first
提交到仓库
完整克隆一个新仓库
执行 git clone . ../beta
它会创建一个新目录 beta 并将其初始化为 Git 仓库,然后克隆整个仓库到 beta,现在 beta 和 alpha 一样了。用过 GitHub 的,请脑补 fork。
仓库之间同步
- 切换到 beta 目录,修改 number.txt 的内容为 “second”
- 执行
git add number.txt
和git commit -m second
提交到仓库 - 到 alpha 目录
- 执行
git remote add beta ../beta
,将 beta 仓库设为远程仓库 - 执行
git pull beta master
分支开发
现在执行
git branch red
,创建一个名为“red”、指向 second 提交的新分支然后执行
git checkout red
,在 checkout 之前,HEAD 指向 master 分支,执行命令之后它就指向了 red 分支,使得 red 成为当前分支接下来把
number.txt
的内容修改为 “third”,执行git add numbers.txt
和run git commit -m third
之后再执行
git push beta red
,这条命令会把 alpha 仓库内跟 third 提交相关的对象拷贝至 beta 仓库
acknowledge
多谢 @Amio 翻译的文章(六百字读懂 Git)。我做的,只是把文章中的原理去掉,因为我不关心实现,只关心使用。这样做后,发现这篇文章对了解仓库、分支、同步非常好,以此为台阶,GitHub user 去理解 fork、pull request 就容易的多。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。