Window下使用 Git 小记

  • 内容
  • 评论
  • 相关

一、安装必要客户端

1. TortoiseGit

   http://tortoisegit.googlecode.com/files/TortoiseGit-1.0.2.0-32bit.msi

下载安装后,重启系统。

2. 安装 msysgit

   a. 从 http://msysgit.googlecode.com/files/Git-1.6.2.1-preview20090322.exe 下载并安装;

3. JGit/EGit plug-in for Eclipse 3.5

   a. 菜单 -> Help -> Install New Software -> "Add" Button;

   b. "Add Site" 

      Name     : jgit Location

      Location : jgit - http://www.jgit.org/updates

选择最新版本(目前是 0.5.0.200908282229)安装之;

   c. 重启 Eclipse

=============================================================================

二、在服务器上建立公共库 并提交第一个项目

说明中省略了在提示框填写密码的步骤。

1. ssh 到服务器,假设当前目录为你的帐户根目录;

2. 在服务器上建立公共库

      $ mkdir gitdemo.git  #仓库名称为 gitdemo.git

      $ cd gitdemo.git

      $ git --bare init --shared #建立裸库,且为 group 共享模式

刚刚创建的 Git 仓库是没有任何分支的,因此也没有 clone 的意义。

所以我们需要向新的仓库上传一些东西,以初始化仓库。

3. 管理员添加公共库的第一个项目

我将在 D:\ 目录下开始所有操作。

   a. 建立本地 Git 仓库的文件夹 AndroidSpace

建议如没有特殊需要,此处不要在 Eclipse 的 workspace下建立仓库目录,

也不要将 workspace 作为仓库目录,否则会使得环境过于复杂,可能造成不必要的麻烦。

最好在与 workspace 同目录下建立仓库目录,例如 AndroidSpace。

也就是说 AndroidSpace 是本地的一个 Git Repository,同时也被当作是 Eclipse 的一个

工作空间,当然它并不是真正你设置的 workspace。

   b. 进入 AndroidSpace 目录,右键点击显示菜单,选择 "Git create repository here",

将会建立一个 .git 目录,此时 AndroidSpace 已经成为一个本地 Git 仓库。

   c. 这里需要手动添加 ".gitignore 文件,以过滤不需要进行版本控制的文件。

方法:

在 AndroidSpace 仓库中新建一个文本文件,如叫 ignore.txt;

向其中添加需要过滤的文件名称的匹配字符,如:

      */bin/*

      */gen/*

添加完毕后保存关闭,在 cmd 窗口,执行以下命令:

      D:\AndroidSpace>ren ignore.txt .gitignore

将 ignore.txt 改名为特定的 .gitignore 文件,直接 F2 重命名在 windows 是不允许的。

   d. 此时使用 Eclipse 建立一个 Android 工程(你也可以用别的)。

注意将目录定位到 AndroidSpace中(你刚才创建的 Git 本地库)。

   c. 此时,Test 项目文件夹及内部各文件都会标有一个大大的问号。

右键点 Test 项目 -> TortoiseGit -> Add... -> 确认要 add 的文件 -> OK;

   d. 此时,Test 项目文件夹及内部不被过滤的文件都会标有一个大大的十字。

右键点 Test 项目 -> (Git commit -> "master") -> 写 comment 以及确认要提交的文件 -> OK ->

完毕后有两个 button : Close 和 Push。

如果 Close 则直接关闭对话框。

如果 Push,则会弹出 Push 对话框,以便将当前分支同步到服务器公共库上。在对话框中填写:

Local:master | Remote:master

Destination: 如果是第一次配置,需要点击 Manage button,打开 Settings 对话框,

右侧面板中填写

Remote:origin | Url: username@server_ip:your_account_dir/gitdemo.git

拷贝一下Url。

点击 "Add New" -> 点击 "应用"。

回到Push对话框,此时 origin 并不会自动显示,你需要选择 Arbitray URL再次填写

一遍 刚才的 Url(下次打开时就会有 origin) 了。

点击“OK”,push 操作完成。

(你也可以 右键点 Test 项目 -> TortoiseGit -> Push... 打开Push对话框。)

此时,Test 项目文件夹及内部不被过滤的文件都会标有一个大大的对号。

   e. 此时在服务器的公共库目录下 使用 git log 命令,可看到刚刚 push 的项目日志。

这样公共库的建立及第一次初始化操作完毕(图 Tor 1, Tor 2)。

   f. 用同样的方法可将之前创建的 .gitignore 文件上传,不妨试一下。

三、从已建立好的公共库上 clone 项目

1. 在 AndroidSpace 同目录下,右键 -> Git clone -> Git clone 对话框,填写 Url 和 Directory,

   Url: username@server_ip:your_account_dir/gitdemo.git。

点击 “OK”,完成 clone。

此时,你可以在 Eclipse 中导入这个新建库中的 Test 项目。就像“Windows XP 下使用 Git 小记 (二)”一样。

四、进行一次两个客户端的同步

这里,由于我是在一台机器上进行操作,所以不能起同样的项目名称,我的当前环境如下:

(你可以将 Eclipse 中的项目删除,重新导入,并分别重命名为 Test1 Test2)

D:/AndroidSpace/Test    导入为-->  Eclipse Test1

D:/AndroidClient/Test   导入为-->  Eclipse Test2

      AndroidSpace 和 AndroidClient 为前述中提到的两个本地 Git Repository, 在服务器上有我们的公共

      Git 库 gitdemo.git。

现在要做的就是,修改 Test1 中的 Test.java 文件,提交修改,并同步到 gitdemo.git,Test2 再与

      gitdemo.git 同步,获取最新的 Test.java 文件的修改。

在将 Git 中的项目导入到 Eclipse 中时,Eclipse 会修改项目目录下的 .classpath 文件,没有关系,

它看起来似乎只是调换了一下里面的内容。把它当作一个普通文件就好了。

1. 打开 Test1 项目的 Test.java 文件,添加如下代码:

private static final String TAG = "Test";

...

setContentView(R.layout.main);

        Log.v(TAG, "Test Message");

...

2. 保存修改后,(不是在 Eclipse 中)右键点击 Test.java -> (Git commit -> "master")

-> 填写 comment,确认要更改的文件,并点击“OK”提交 -> Close;

3. 右键 Test.java -> TortoiseGit -> Push... -> 填写字段 -> OK,push完毕。

可以在服务器端 git log 看看日志。

4. 下面对 AndroidClient 进行一下同步。

右键 AndroidClient -> Git Sync... -> Git Synchronization 对话框 -> 填写表单 ->

点击“Pull”按钮 -> 就会显示出同步结果。

我的有两个: add .gitignore 和 modify Test.java,如果没有冲突,将会自动合并,

如有冲突,那就先解决冲突,再提交修改。

=================================================================================

实际使用的情况会更负责,比如 push 时,一般都需要先 pull 一下,否则如果公共库相对你

的本地库有修改,那 push 操作会失败。

********************************************************************************

TortoiseGit 功能十分强大,而且十分人性化,

需要在使用的过程中不断磨合。clip_image001clip_image002

clip_image003

clip_image004

clip_image005