你的github-通过坚果云管理您的代码

这几天不少”果仁”(坚果用户)通过各种渠道咨询如何通过坚果云同步和备份代码. 目前采用的方式通常是将代码直接放在坚果云中,  每次修改自动同步,  这样做有几个问题:

  • 坚果云的版本历史是自动保存的, 不能添加版本信息. 对于代码而言, 不方便找回和比对历史代码;
  • 专业的代码管理工具(Git/Hg/SVN)能够很容易查看用户对所有代码进行的每次修改, 易于分析bug的来源, 而坚果云不能提供这样的功能
  • 如果将eclipse等IDE的workspace直接放于坚果云中, 假如因为同步不及时造成冲突, 因为文件众多而且涉及到很多IDE相关文件, 可能导致IDE无法正常打开.
  • 编译, 重构等自动化工作引发的同步, 容易导致大量的带宽占用

幸运的是, 我们推荐用如下的方法利用坚果云同步代码, 可以完全保留代码管理工具的长处, 同时利用坚果云提供的自动同步和备份功能.

假设你用的是Git, 当前的开发目录叫”~/projects”, 而坚果云路径为”~/Nutstore”, 进行如下操作:

  • ~/projects $>git init            (注释: 初始化git repository)
  • ~/projects $> git add .
  • ~/projects $> git commit -m “first commit”
  • ~/projects $> mkdir -p ~/Nutstore/git/project   (注释: 在坚果云中创建bare git repository)
  • ~/projects $> cd ~/Nutstore/git/project
  • ~/Nutstore/git/project $> git init –bare
  • ~/Nutstore/git/project $> cd ~/project (注释: push代码到坚果云中)
  • ~/project $> git remote add orig ~/Nutstore/git/project
  • ~/project $> git push orig master

这样在所有电脑上都可以正常的进行git pull & git push, 以后每次修改代码只需commit, 然后将代码push到~/Nutstore/git/project即可享受到git+坚果云的所有好处. 如下:

  • ~/project $> git push orig master

假如你用的hg/Mercurial, 按照如下流程操作:

  • ~/projects $> hg init            (注释: 初始化hg repository)
  • ~/projects $> hg add
  • ~/projects $> hg commit -m “first commit”
  • ~/projects $> mkdir -p ~/Nutstore/hg/project   (注释: 在坚果云中创建bare hg repository)
  • ~/projects $> cd ~/Nutstore/hg/project
  • ~/Nutstore/hg/project $> hg init
  • ~/Nutstore/hg/project $> cd ~/project (注释: push代码到坚果云中)
  • ~/project $> echo “[paths]\ndefault = ~/Nutstore/hg/project\n” > .hg/hgrc
  • ~/project $> hg push

这样在所有电脑上都可以正常进行 hg push & hg pull, 以后每次修改代码只需commit, 然后将代码push到~/Nutstore/hg/project即可享受到hg+坚果云的所有好处. 如下:

  • ~/project $>hg push

备注:

如果你想了解git和hg的用法, 下面是很好的入门材料.

git: http://book.git-scm.com/

hg: http://hginit.com/

    分享到:
此条目发表在 使用技巧 分类目录。将固定链接加入收藏夹。

你的github-通过坚果云管理您的代码》有 7 条评论

  1. tolbkni 说:

    这样做能够避免冲突?万一两次 push 间隔时间非常短呢,或者多个人同时 push 呢?
    这种方案确实比直接同步要好很多,可是一旦发生同步冲突处理起来也要麻烦很多。

    • admin 说:

      同一台电脑, 两次push间隔时间很短是不会造成冲突的.

      只要不在两台电脑上同时push, 应该不会有冲突. 假如参与代码协同的人数很少, 可能造成冲突的时间窗口很小. 即使不幸出现冲突. 但是冲突的文件夹处于坚果铺子中, 而用户的工作目录不会有冲突, 只需删除冲突的代码文件夹, 然后将用户工作目录重新push就可以了.

      • 醉仙望月 说:

        只需删除冲突的代码文件夹?这个“只需”之前,最重要的一步是“聊”!出现冲突没有不问清楚上来就删文件的……所以Sharepoint这类协同办公软件的文件夹窗口都自带聊天框。

    • coneagoe 说:

      别尝试了。本来就不是用来干这事的,多人同时开发这种需求还是老老实实用版本控制工具吧。

  2. pokka 说:

    ubuntu下git一直报does not appear to be a git repository的错误,纠结中

  3. 匿名 说:

    git一直弄不到耶- -