Windows XP 下使用 Git 小记 (一) -- with JGit/EGit
Windows XP 下使用 Git 小记 (一)
-- with JGit/EGit
?
一、安装必要客户端
?
1. 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
?
?
2. 安装 msysgit
?? a. 从 http://msysgit.googlecode.com/files/Git-1.6.2.1-preview20090322.exe 下载并安装;
?
=============================================================================
?
二、在服务器上建立公共库 并提交第一个项目?
?
1. ssh 到服务器,假设当前目录为你的帐户根目录;
?
2. 在服务器上建立公共库
?? ? ?$ mkdir gitdemo.git ?#仓库名称为 gitdemo.git
?? ? ?$ cd gitdemo.git
?? ? ?$ git --bare init --shared #建立裸库,且为 group 共享模式
?
?? 刚刚创建的 Git 仓库是没有任何分支的,因此也没有 clone 的意义。
?? 所以我们需要向新的仓库上传一些东西,以初始化仓库。
?
3. 管理员添加公共库的第一个项目
?? a. 在本地建立一个仓库目录,例如我的 D:/AndroidSpace
?? ? ?建议如没有特殊需要,此处不要在 Eclipse 的 workspace下建立仓库目录,
?? ? ?也不要将 workspace 作为仓库目录,否则会使得环境过于复杂,可能造成不必要的麻烦。
?? ? ?最好在与 workspace 同目录下建立仓库目录,例如 AndroidSpace。
?? ? ?也就是说 AndroidSpace 是本地的一个 Git Repository,同时也被当作是 Eclipse 的一个
?? ? ?工作空间,当然它并不是真正你设置的 workspace。
?
?? b. "开始" -> "所有程序" -> "Git" -> "Git GUI" ?(图 Git GUI 1)
?? ? ?选择 "创建新的版本库" (图 Git GUI 2)(图 Git GUI 3)
?
?? c. 从这步开始,既可以使用 Git GUI,也可以使用 Eclipse 插件向公共库提交项目。
?
?? ? ?如果使用Git GUI,则需要手动添加 ".gitignore 文件,以过滤不需要进行版本控制的文件。
?? ? ?方法:
?? ? ?在 AndroidSpace 仓库中新建一个文本文件,如叫 ignore.txt;
?? ? ?向其中添加需要过滤的文件名称的匹配字符,如:
?
?? ? ?*/bin/*
?? ? ?*/gen/*
?
?? ? ?添加完毕后保存关闭,在 cmd 窗口,执行以下命令:
?
?? ? ?D:\AndroidSpace>ren ignore.txt .gitignore
?
?? ? ?将 ignore.txt 改名为特定的 .gitignore 文件,直接 F2 重命名在 windows 是不允许的。
?? ? ?-------------------
?? ? ?如果是 Eclipse,可在 菜单 -> Window -> Preferences -> Team -> Ignored Resources 中,
?? ? ?勾选需要过滤的文件匹配符,或自行添加。(图 Ecl 1)
?
?
?? d. 这里以使用 Eclipse 为例。向 AndroidSpace 中添加第一个项目文件
?? ? ?可以在 Eclipse 中创建文件,期目录定位到 AndroidSpace中(图 Ecl 5);
?? ? ?建好后,
?? ? ?-- 在 Eclipse 中右键选择 Test 项目 -> Team -> Share Project -> Git,点击 "Test" 项目名称,
?? ? ? ? 因为 Test 已经在 AndroidSpace 这个 Git 仓库中了,所以 "Create" 按钮是灰的,直接点击
?? ? ? ? "Finish" 即可; 如果你是将一个没有放在 Git 仓库中的项目添加到 Git,此时可点击 "Create"
?? ? ? ? 按钮以创建一个 Git 仓库(图 Ecl 6)。
?? ? ?-- 将 Test 加入版本控制后,在 Eclipse 中右键选择 Test 项目 -> Team -> Add to Version Control;
?? ? ?-- 再次右键选择 Test 项目 -> Team -> Commit... (图 Ecl 7),提交页面已经过滤掉了不需要进行
?? ? ? ? 版本控制的文件,填写 comment 后,点击 "commit"。
?
?? e. 将本地 Test 项目上传到服务器的公共库上
?? ? ?-- 在 Eclipse 中右键选择 Test 先项目 -> Team -> Push to...;
?? ? ?-- 填写服务器上公共库的路径 (图 Ecl 8)
?? ? ?-- 按提示继续;
?? ? ?-- 到提交页面,选择要 push 源分支 和 目的分支后,点击 "+ Add spec" 按钮,
?? ? ? ? 或者直接点击 "Add all branches spec"(图 Ecl 9);
?? ? ? ? 点击 "Next" 或 "Finish",完成 push 操作(图 Ecl 10)。
?
?
?? f. 此时在服务器的公共库目录下 使用 git log 命令,可看到刚刚 push 的项目日志。
?? ? ?这样公共库的建立及第一次初始化操作完毕(图 Ecl 12)。
?
?
三、从已建立好的公共库上 clone 项目
?? ? ?这里假设是在另一台机器上的操作,没有之前的 Test 项目,如果是在同一台机器上在做这个联系,
?? ? ?为表示清楚,最好在 Eclipse 中删除之前的 Test 项目。
?
?
1. 在 Eclipse 中 Import 项目 -> Git -> Git Repository (图 Ecl 13)
?
2. 填写服务器公共库信息 (图 Ecl 14),点击“Next”;
?
3. 选择要 clone 的分支,点击“Next”;
?
4. 选择本地项目的存放路径,这里设置为与 Eclipse 的 workspace 同路径的 AndroidClient(图 Ecl 15),
?? 注意,clone 操作是将整个公共库做一个镜像,所以这里的 AndroidClient 在 clone 后就相当于之前的
?? AndroidSpace;
?
5. 在最后一步时,将会提示"Some projects were hidden because they exist in the?
?? workspace directory"(图 Ecl 16),这应该是一个bug,此时点击 "Cancel" 按钮,将提示
?? "A complete clone was already made. Do you want to delete it?",这里要选择"No"。
?
6. 现在公共库已经被 clone 到本地了,我们可以导入它。
?? "Import -> General -> Existing Projects into Workspace",
?? 选择 ..AndroidClient\Test 工程,这里不要选择 "Copy projects into workspace",因为我们的项目要
?? 进行版本控制的所有信息,都在 AndroidClient 目录下,如果将 Test 项目 copy 到 workspace,则新建
?? 的 Test 项目就脱离了之前的版本控制。
?
?? 这里,使用新建一个 Android 项目 中的 "Create project from existing source" 也可实现同样效果。
?
7. 新导入的 Test 项目,此时要告诉 Eclipse 对 Test 进行版本控制,仍然是:
?? 右键 Test -> Team -> Share Project -> Git -> 点击选择 "Test" 名称 -> Finish;
?? 至此一个 clone 到本地仓库的项目就被导入到 Eclipse 了。
?
?
四、进行一次两个客户端的同步
?? ? ?这里,由于我是在一台机器上进行操作,所以不能起同样的项目名称,我的当前环境如下:
?
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 文件的修改。
?
1. 打开 Test1 项目的 Test.java 文件,添加如下代码:
?
private static final String TAG = "Test";
?
...
setContentView(R.layout.main);
?? ? ? ?Log.v(TAG, "Test Message");
...
?
2. 保存修改后,右键点击 Test.java -> Team -> Commit... -> "Modify Test.java" 并 提交;
?
3. 右键 Test1 -> Team -> Push to... 使用默认的 Configured remote repository 选项 -> Next;
?
4. 选择 Source ref : refs/heads/master | Destination ref : refs/heads/master,并点击 "+ Add spec",
?? 或者直接点击 "Add all branches spec";
?
5. 点击 "Next" 或 "Finish" 完成操作。如果成功,会显示绿色方格。
---------------------
6. 右键 Test2 -> Team -> Fetch from... 使用默认的 Configured remote repository 选项 -> Next,
?? 此时 "Specifications for fetch" 框内应该已经自动选择了要同步的内容,
?? Source Ref : refs/heads/* | Destination Ref : refs/remotes/origin/* | Force Update已选,
?? 点击 "Finish"。完成后,本地的 remote/origin/master 分支就还是最新的了。
?
7. 很遗憾,我没有找到继续进行的 Eclipse 菜单,应该是还没有添加此功能,毕竟这只是 0.5 版本。
?
?? It's so depressing!
?
?? So I have to use other git tools.
?
?? P.S. You can do all the tasks above with EGit in Eclipse, of cource if you like.
*********************************************************************************
?? 剩下的工作,可以交给 TortoiseGit 去做了。很简单,就是
? git merge
? 修改冲突文件
? git add XXX
? git commit?
?
*********************************************************************************
?? 适用了一下 TortoiseGit,类似于 TortoiseSVN,比较强大的一个工具。
?? 对于 TortoiseGit 的使用将会在以后的文章中说明。