msgbartop
用铅笔写日记,记录那最原始的美丽
msgbarbottom

10-3-1 初识git

最近看到git这个年轻的SCM(版本控制系统)逐渐流行起来了,很多知名的开源项目都纷纷转移到它的怀抱里,如我们熟知的著名linux桌面环境gnome,还有我最爱的播放器vlc等

而且网上对git的好评也是如潮水一般呀。那么,作为喜好尝鲜的我,情绪自然不会稳定了。

总想去尝试一下,看看究竟如何的好?

由于googecode不支持git,而以git著名的github,我也没有帐号.所以只能在sourceforge上小试牛刀了

以sf为例,首先进入项目页面,找到admin菜单下的feature manage下面,启用git(SourceCode Version Control),就是在它前面打个钩。其实这个时候git repository 就已经初始化好了.

这个时候,如果不想再用其他的SCM的话,把它们前面的钩去掉就可以了(前提是你已经check out了)。

接下来,就是进入members菜单,点击用户名,勾选 "Allow access to Git repository (developer access)"选项,授一下权。

ps:以上操作需要project administrator 身份.

现在,就是导入版本库了。

git 要求用户本地也要有一个版本库,然后再push到远程服务器。这一点让我很不习惯,因为我一般都是直接commit到远程repo的.

因为我在windows 平台,所以还得安装git 的win 版 --msysgit.如果IDE是visual studio 的话,可以直接下载 Git Extensions 的完整版安装,里面包含了MSysGit 和 KDiff3.

之后,进入 git bash,其实就是个MinGW环境.
现在开始初始化本地git repo.

mkdir temp cd temp git init (初始化空版本库 temp) git config user.name "temp NAME" (设置名字) git config user.email "[email protected]" (设置邮箱)

#(添加远程repo 地址.sf 是以 ssh 开头,默认repo 名字是项目unix名,可以改)
git remote add sf ssh://[email protected]/gitroot/TEMP-PRO/TEMP-PRO
git config branch.master.remote sf
git config branch.master.merge refs/heads/master

至此,本地git库建立完毕,并映射好了远程git 库.且merge以本地为主.
当然,这一切均可以通过git extension的菜单完成.

接下来,创建一个hello.c文件,push到远程repo上.

vim hello.c git add hello.c git add . git commit -a -m "this is hello.c" git push sf master #(需要输入密码,如果报 fatal: The remote end hung up unexpectedly 错,可能是ssh地址输入错误. #也有可能是没有生成对应ssh的公钥和私钥到服务器导致的.)

到这步,我已经成功向远程版本库提交了源码.

不过我很快就发现了git的一个毛病,就是无法删除以前提交的文件.
这个真是个问题,万一程序员不小心提交了一下一些私密文件(如密码、艳照之类),哪岂不是糟了!!?
尽管可以 git rm hello.c ,不过在仓库里只是标识了 "deleted",还是可以打开.
谷歌一下,终于找到了一个方案,见 git: forever remove files or folders from history,提供了个shell 脚本.
保存为 del.sh,运行 del.sh hello.c ,嘿还真删除了.
不过 push 的时候,出错了!提示

! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '/path/to/'

说需要先从服务器上pull 一下,oh ,my god...囧rz

好在我有shell权限,直接登录,定位到 /home/scm_git/t/tm/temp-pro/temp-pro,直接删除.草~

最后,给个链接《Git 中文教程》,我还是继续SVN吧.

访客的留言

    1. 小鑫最近玩的都是高科技
      什么诸如远端非官方指定平台下实现QQ签名协同非线程程序更新事件,啊啊,高科技年代

      1. 囧rz,半夜2点还没睡?

    2. vk vk

      有些不大懂。。当学习一下吧

      发现回帖验证改了。。

    3. 我承认我不大习惯中文夹英文的叙述方式,虽然我曾经很喜欢这样。

      p.s 我这里移动小区宽带访问不了你这个站啊,还以为被无限期河蟹了呢~

      1. 我错了,是时好时不好;不好的时候,用电信代理能上~

      2. 我一直是守法公民啊,怎么可能无缘无故被河蟹呢?

        不过告诉你一个噩耗,你的站点被dyndns干掉了,我这边访问不了

        Hostname www.lemonsays.com is blocked in your defense plan.

      3. 这是相关信息:

        CNAME www.lemonsays.com is not in any categories.

        w119079.s41.mydiscuz.com is in the following categories: Phishing.(可能和你一个ip)

        Hosts in the Phishing, Spyware, and Conficker Worm categories are blocked by default if you do not have a defense plan.

        To change your settings, you'll need to create a network and defense plan. If you already have a defense plan, you can modify it.

        1. 囧。

          一直想为我的博客建个副本,看来时机成熟了。

          我那个网站的确不是独立IP,但话又说回来有几个是呢?

写下你的评论 »

(若看不到,请刷新。)