寄人篱下, 生活所迫
Foward
- 此文写给能使用git, 但是当下需要非常迫切使用SVN的开发人员
- 本文默认你已经能够掌握git协议相关知识, 否则本文涉及到的相关术语看起来会造成一定的困惑.
- 既然是快速入门, 文本尽量用git与SVN作对比进行说明(并没有
- 本文远程仓库使用GitHub, 实际结合个人需要使用
Checkout
首先你要做的事情是Subversion(以下简称svn) checkout。由于Git clones
将工作目录(你编辑文件的地方)与存储库数据(.git)分开,因此在工作目录中一次只能有一个分支。
svn checkouts
是不同的:它们将工作目录中的存储库数据混合在一起,因此对于checkout的每个分支和标记都有一个工作目录。对于具有许多分支和标签的存储库,检查所有文件可能是一个负担,因此你应该从部分checkout开始。
1.在GitHub上找到repository的导航主页.
2.在repository名称的下面, 点击Clone or download
.
3.选择Clone with HTTPS
, 复制其中的链接.
4.在本地repository中创建一个空的checkout:
1 2 3
| $ svn co --depth empty https://github.com/user/repo Checked out revision 1. $ cd repo
|
5.获取trunk
分支. SVN会把trunk
桥接映射到Git HEAD branch
(通常指master
).
1 2 3 4 5
| $ svn up trunk A trunk A trunk/README.md A trunk/gizmo.rb Updated to revision 1.
|
6.在branches
路径下获取空的checkout. 这是所有非HEAD
分支存在的地方,你将在这里做feature branches
.
1 2
| $ svn up --depth empty branches Updated to revision 1.
|
my ex:
1 2 3 4 5 6 7 8 9 10
| $ tree . ├── branches │ └── more_awesome │ ├── LICENSE │ ├── README.md │ └── test └── trunk ├── LICENSE └── README.md
|
创建分支
你也可以使用Subversion桥接到GitHub创建分支。
从svn客户端,通过更新确保master
是最新的trunk:
1 2
| $ svn up trunk At revision 1.
|
接下来,你可以使用svn copy
创建新分支:
1 2 3 4 5 6
| $ svn copy trunk branches/more_awesome A branches/more_awesome $ svn commit -m 'Added more_awesome topic branch' Adding branches/more_awesome Committed revision 2.
|
现在你能确认新分支能在github的branch下拉栏里看到:
你可以确认新分支存在于存储库的分支下拉列表中:
1 2 3
| git fetch From https://github.com/user/repo/ * [new branch] more_awesome -> origin/more_awesome
|
提交修改
在添加了一些功能并修复了一些错误之后,你需要将这些更改提交给GitHub。这就和你平时使用svn一样。编辑文件,并使用svn commit
记录你的更改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $ svn status M gizmo.rb $ svn commit -m 'Guard against known problems' Sending more_awesome/gizmo.rb Transmitting file data . Committed revision 3. $ svn status ? test $ svn add test A test A test/gizmo_test.rb $ svn commit -m 'Test coverage for problems' Adding more_awesome/test Adding more_awesome/test/gizmo_test.rb Transmitting file data . Committed revision 4.
|
切换分支
要在分支机构之间切换,你可能需要首先检查trunk
的内容:
1
| $ svn co --depth empty https://github.com/user/repo/trunk
|
然后,你可以切换到另一个分支:
1
| $ svn switch https://github.com/user/repo/branches/more_awesome
|