1

很多人抱怨 Git 难学难用,特别是和 svn 相对。看 cmd line 也古怪的很,透着不舒服,就像毕加索的画

clipboard.png

然而,有人用 300 行的 js 代码就可以完成 git 的主干功能,看起来,一定是我们那里理解错了。

关键是要明白,分布式开发,是有多份仓库的,每个仓库都是一个 svn,操作和 svn 也大同小异。在此之外,还需要考虑仓库之间的同步。这就是 svn 所没有的东西了。

以下内容就从 workshop 开始,帮助理解 git。

就 4 个步骤照做。

建立仓库

  1. 首先保证有一个目录叫做 alpha
  2. 执行 git init 将这个 alpha 文件夹初始化为 Git 仓库
  3. 执行 git add number.txt 会将 number.txt 添加到 Git 的索引(index)中,这个索引记录了所有 Git 保持追踪的文件
  4. 执行 git commit -m first 提交到仓库

完整克隆一个新仓库

执行 git clone . ../beta 它会创建一个新目录 beta 并将其初始化为 Git 仓库,然后克隆整个仓库到 beta,现在 beta 和 alpha 一样了。用过 GitHub 的,请脑补 fork。

仓库之间同步

  1. 切换到 beta 目录,修改 number.txt 的内容为 “second”
  2. 执行 git add number.txtgit commit -m second 提交到仓库
  3. 到 alpha 目录
  4. 执行 git remote add beta ../beta,将 beta 仓库设为远程仓库
  5. 执行 git pull beta master

分支开发

  1. 现在执行 git branch red,创建一个名为“red”、指向 second 提交的新分支

  2. 然后执行 git checkout red,在 checkout 之前,HEAD 指向 master 分支,执行命令之后它就指向了 red 分支,使得 red 成为当前分支

  3. 接下来把 number.txt 的内容修改为 “third”,执行 git add numbers.txtrun git commit -m third

  4. 之后再执行 git push beta red,这条命令会把 alpha 仓库内跟 third 提交相关的对象拷贝至 beta 仓库

acknowledge

多谢 @Amio 翻译的文章(六百字读懂 Git)。我做的,只是把文章中的原理去掉,因为我不关心实现,只关心使用。这样做后,发现这篇文章对了解仓库、分支、同步非常好,以此为台阶,GitHub user 去理解 fork、pull request 就容易的多。


Reco
4.6k 声望541 粉丝

敢作敢为