从 SVN 到 Git

文章出处,原创于 http://HawkingOuYang.com/

我的GitHub


GitFlow(Git代码版本控制与分支维护)

Git使用小指南.pdf → 下载或在线预览

Git软件:SourceTree

Git命令:常用 Git 命令清单

代码的Git工作流

Git分支维护

####
//TODO: here !!

Bitbucket v.s. GitHub

What are the differences between BitBucket and GitHub?

GitHub 开源仓库、Bitbucket 私有仓库、GitLab 自主服务器的仓库

GitHub、Bitbucket、GitLab 比较

SVN 迁移到 Git

How to migrate SVN repository with history to a new Git repository?

Migrate to Git from SVN ——— 很详细

Migrating from Subversion to Git and the Lessons Learned

SVN 技巧

©KEVIN , note that KEVIN is my colleague, great thanks for KEVIN.

1、初始化项目
svn import /Users/cress/本地项目目录 https://server/项目目录 -m “Initial import”

2、下载项目
svn checkout https://server/项目目录

3、添加文件
svn add test.txt

4、提交添加的文件,或者本地做的修改提交到服务器端
svn commit -m “add test.txt by test”

5、删除项目中的相应内容
svn delete https://server/项目目录/文件名称 -m “delete test.txt for test”
svn delete /Users/cress/本地项目目录 -m “delete test.txt for test”

6、更新最新版本
svn update
svn update -r 200 test.txt (更新指定的版本)

7、查看本地修改的文件状态
svn status

8、单纯导出一个干净的项目内容(项目内容不带有svn隐藏记录信息)
svn export https://server/项目目录

9、加锁/解锁
svn lock /Users/cress/本地项目目录(或文件名)-m “批注”
svn unlock /Users/cress/本地项目目录(或文件名)

10、查看日志
svn log test.txt

11、比较差异
svn diff -r m:n test.txt (对版本m和版本n比较差异)

12、合并两个版本
svn merge -r 12:14 text.txt (把版本12和14之间的差异合并到当前的文件中)

13、svn帮助
svn help
svn help commit

14、冲突合并
svn resolve –accept working test.txt

14、恢复本地修改
svn revert [-R] something
something可以是(目录或文件的)相对路径也可以是绝对路径。
当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。

14.2 回滚到指定的版本
svn update -r 回滚到的版本号 如:svn update -r 2113
提交回滚
svn ci -m “注释” 如:svn ci -m “添加模块协调者之前的标签”

14.3 复制一个项目
svn copy 原地址 目标地址
如:svn copy -m “添加模块协调者的分支”

15、代码库URL变更
svn switch (切换分支)
svn switch –relocate [path] (切换资源库)

switch用于在同一个版本库内不同分支之间的切换
relocate用于版本库访问地址变更时,重新定位版本库

比如,由于SVN服务器更换到另一台主机上,这是SVN服务器的地址改变了,那么各客户端就无法连接SVN服务器了,这时各客户端就需要执行relocate,将本地工作区的连接到新的服务器上去

而如果同一个版本库内,如果有多个分支,比如你现在正在trunk上开发,但需要切换到某个分支上开发,那么你可以用switch来进行这个切换操作,这时SVN会比较trunk和这个分支之间的差异,将差异部分传送到你的本地工作区,而不用将整个分支传送给你,从而避免巨量数据的传输。switch操作之后,你所进行的update、commit操作都变成了针对那个分支,当你在分支上的工作完成后,还可以再次switch回trunk。

switch还有另外一些用途,比如希望让分支中的某个文件夹保持和trunk同步,因为有人正在trunk的这个文件夹中进行开发,在分支中想用到开发的最新成果,那么就可以在分支的这个文件夹上设置swtich到trunk,这时update整个分支的话,就会把trunk上的这个文件夹取下来了。但是,当然你如果修改了这个文件夹的内容,commit后也是提交到了主干而不是提交到了分支。

16、打标签
每达到一个里程碑都应该给代码打个标签。
打基线—就是打标签,只是加上文档等资料
标签的特点?
只读
如何打标签?
Versions工具不能打标签,要打标签就要使用命令终端,通过命令来输入。
打标签其实就是执行复制:svn copy。
svn copy 命令不是真正复制真实的文件,而是只是对各个文件做版本记录,
不占多大的服务器空间。
svn copy 命令格式:
svn copy 源URL 目的URL -m “注释”

12、打分支
什么时候该打分支?
当主线项目需要添加一个新的功能,而这个功能需要开发比较长的时间。在新功能开发的这段时间内,主线的项目还需要继续修改Bug,发新版本。这种情况下,就需要另起个分支,用来开发新功能,而且不影响主线程的进度。
分支开发注意的地方:
1)主线尽量不要改变分支上要更改的文件
2)分支尽量代码独立

如何打分支?
打分支和打标签是一样的,命令也是 svn copy,格式也是一样的。

14、合并代码
在分支上开发代码完成后,就需要把分支的代码合并到主线程,有时特殊需要,也会把主线的代码合并到分支中。
合并分支要注意的地方:
1)要记录打分支时的版本号
2)要记录每次合并代码的版本号
如何合并代码?
例子:把分支的代码合并到主线中
终端命令进入主线代码的跟目录,执行如下命令:
svn merge –r 打分支时版本号或者上次合并的版本号:HEAD 分支URL

Git 的 .gitignore 怎么配置 与 Git技巧

(一)Git 创建

How to fully delete a git repository created with init?

stackoverflow

Is there a command to undo git init?

stackoverflow

How to create .gitignore file

stackoverflow

(二).gitignore 语法

Configure git to track only one file extension

stackoverflow

How to include only selected files into git repository and exclude all the rest?

stackoverflow

Using .gitignore to ignore everything but specific directories

stackoverflow

gitignore - only allow certain extensions and files

stackoverflow

How to ignore all files in a folder with a git repository in SourceTree?

stackoverflow

(三)Xcode 配置 .gitignore

Git ignore file for Xcode projects (重要)

stackoverflow

Xcode 7: ignore .xcscmblueprint in repository?

stackoverflow

GitHub (对,这个)

(四) 删除Git历史 —— 不能乱用,想清楚!
Make the current commit the only (initial) commit in a Git repository? 不能乱用,想清楚 !

stackoverflow

(五) 压缩Git仓库、仓库维护、提交历史恢复

Reduce git repository size (压缩Git仓库——这个好)

stackoverflow

How to Shrink a Git Repository

stackoverflow

10.7 Git Internals - Maintenance and Data Recovery (先添加再删除“大文件” 移除提交记录——这个权威)
git

SourceTree:Git or SVN

用Git的方式使用SVN

8.1 Git 与其他系统 - Git 与 Subversion

Can SourceTree connect to hosted SVN repos through SSH?

git-svn problems on Mountain Lion

USING SOURCETREE WITH SUBVERSION (HINT: DON’T)

mac 下 sourcetree 下载 使用 安装svn

使用 Git + Dropbox + SourceTree 做 Source Code Management ( 这个很强大!)