`

[原创] Linux命令行下使用SVN和Git的一些用法总结

    博客分类:
  • svn
 
阅读更多
以下都是比较基础的操作,高手们请绕道,不必浪费时间来看了。
(A)SVN

(1)查看日志
提交的时候一般会写上注释,如果要查看提交日志,用以下命令:
1

svn log -l 4

其中,-l 4表示只查看最近4条日志(也可以没有这样的参数,就表示查看所有日志)。但是你通常会很抓狂地发现,最近的几条日志中,竟然没有你才刚刚提交的那一次的日志!这是怎么回事?日志丢了吗?
其实,是因为你要很用以下命令,更新本地的版本库,才能看到最近提交的日志:
1

svn up

这事如果你没注意到,那么可能会浪费你很多时间。问Google也不好找答案,因为这个问题不太好描述,所以不好搜索答案。

(2)查看指定的版本修改了哪些文件
1

svn diff --summarize -c 566

其中,566是你指定的版本。

(3)查看某个文件在指定的版本修改了什么内容
1

svn diff Test.java -c 566 > codelast.diff

其中,Test.java是你要检查的文件,566是你指定的版本,最后diff被输出到了codelast.diff文件中。

(4)提交
1

svn ci -m "Your comment"

其中,Your comment 就是你填写的注释,如果你想换行写,也是可以的,只要你不写后面的那个引号,你可以写一行就回车一次,最后写完了,再加上后面的引号,然后再回车,就执行提交动作了。

(5)检出指定版本的版本库
1

svn co https://xxx -r 566

其中,https://xxx 是你的版本库地址,566是你要检出的版本号。版本库将被检出到当前路径下。
文章来源:http://www.codelast.com/

(6)将指定version的trunk上的代码拷贝到tags的指定目录下
1

svn cp https://svn.codelast.com/trunk/my-project@1333 https://svn.codelast.com/tags/my-project-r1333

如上命令将trunk下的 my-project 项目的 1333 版本拷贝到了tags下的 my-project-r1333 中。

(7)将branches上的指定版本合并(merge)到trunk上
有时候我们会在一个分支(branches)上开发,等开发完成的时候,需要把我们已经提交到branches上的代码合并到trunk上,假设你本地的工作目录是在branches上(刚开发完branches上的一个版本,提交了代码),那么可以像下面这样做:
1
2

svn switch trunk-url-of-your-project
svn merge branch-url-of-your-project

其中,第一条命令是将本地工作目录切换到trunk上。执行完这条命令后,你本地的工作目录里的文件就会变成与trunk里的文件一致。
第二条命令是将branches上的文件合并到本地。执行完这条命令行,你本地的工作目录里的文件就会变成与branches合并的结果。但是请注意,由于本地的工作目录已经是trunk了(用svn info可查看),所以这一更新,就导致本地有若干文件变成“已修改,但未提交”的状态。因此,你需要把本地因merge被修改过的文件提交一次,就可以使得trunk上的文件变成与branches合并后的版本:
1

svn ci -m "Merge branch to trunk"

文章来源:http://www.codelast.com/
关于svn merge的更详细说明,可参考此文档。

(8)为文件添加上可执行权限
假设你有一个脚本文件checkin到代码库中了,但是你在commit之前,却忘了给它添加可执行权限,那么,当checkout出来这份代码时,就会得到一个没有x权限的脚本,还需要手工再为它添加上x权限,非常麻烦。所以,要为该文件添加上x权限:
1

svn propset svn:executable on your-script.sh

然后再 svn ci 提交修改即可(尽管你没有修改文件内容,只是修改了文件的权限,也是会被标记为已修改的,需要将此修改提交到代码库中)。

(9)checkout单个文件到本地
如果用 svn checkout 单个文件的URL 来检出一个文件到本地的话,会得到如下的错误提示:

    svn: E200007: URL 'https://xxx' refers to a file, not a directory

那么,如何checkout单个文件呢?答案是用svn export命令即可。

(10)Review Board提交svn的diff文件时,提示“The file 'https://svn.codelast.com/abc.txt' (r1030) could not be found in the repository”错误的解决办法
我遇到的这例错误,是因为我在一个项目中新添加了一个文件abc.txt,于是用 svn add abc.txt 添加它,然后 svn diff > today.diff 生成了项目的diff文件,然后把该diff文件提交到Review Board中,想要生成一个新的review,结果就遇到了上面的错误提示。
这个错误提示乍一看非常搞笑:因为abc.txt是新添加的文件,它当然不会在repository中存在啊!这不是废话么?
同时我注意到,当我执行 svn add abc.txt时,命令行提示:

    A  (bin)  abc.txt

虽然abc.txt是一个纯文本文件,但是svn貌似把它认作了一个binary文件,于是我Google到了这个链接,按照里面的说法,我在 svn add abc.txt 之后进行了如下操作:
1

svn propset svn:mime-type 'text/plain' abc.txt

然后再生成项目的diff文件,再提交到Review Board上,问题搞定!
(B)Git
分享到:
评论

相关推荐

    版本控制SVN&GIT软件包及安装方法(详细、全)

    本文将详细讲解两种广泛使用的版本控制系统:SVN(Subversion)和Git,并提供它们的软件包下载与安装步骤。 首先,让我们了解SVN。SVN是Apache软件基金会的一个项目,它的全称为Subversion,主要用于集中式版本控制...

    linux-一个用于尝试git的沙盒

    在这个"linux-一个用于尝试git的沙盒"中,你可以安全地练习Linux命令行操作,了解如何创建、编辑、移动和删除文件,以及如何配置系统设置。 接下来,我们转向Git。Git是GitHub创始人之一林纳斯·托瓦兹为了改进传统...

    SVN linux安装

    **标题:“SVN Linux安装”** 在开源世界中,Subversion(简称SVN)是一种广泛使用的版本控制系统...总之,理解并熟练掌握SVN的安装和使用对于Linux环境下的软件开发团队至关重要,它提供了高效、可靠的版本控制方案。

    git的详细用法

    Git是一款流行的版本控制系统,用于跟踪计算机文件的更改以及协调多人之间的工作。Git是一个开源项目,由...通过实际使用和不断实践,用户可以逐步掌握Git的详细用法,并在日常开发和团队协作中发挥出Git的强大力量。

    Git安装及使用教程文档

    在 Linux 平台上安装 Git,可以使用以下方法: * 使用包管理器安装,例如 Debian/Ubuntu 可以使用 `sudo apt-get install git`,Centos/RedHat 可以使用 `sudo yum install git`。 * 使用源码安装,下载 Git 的源码...

    vscode添加GIT和SVN的方法示例

    在开发环境中,版本控制工具是不可或缺的,Visual Studio Code (VSCode) 作为一个强大的源代码编辑器,提供了集成Git和Subversion(SVN)的功能。本文将详细介绍如何在VSCode中添加和配置这两种版本控制系统。 ### ...

    SVN Linux下的安装过程

    本文将详细介绍如何在SUSE Linux环境下安装和配置SVN服务器,帮助读者掌握在Linux系统下搭建SVN服务器的方法。 #### 二、SVN安装与验证 1. **确认安装VNC包** 首先,需要注意的是提供的部分内容似乎与标题和描述...

    Git基础用法

    1. Windows下安装Git:可以从Git官网下载最新版本的Git for Windows,安装过程中可以选择设置Git Bash模拟Linux命令行环境。 2. Mac下安装Git:可以通过Homebrew或直接从Git官网下载DMG文件进行安装。 3. Linux下...

    Git Bash安装,常用命令,使用示例说明,问题总结

    Git Bash是Windows操作系统上使用Git的一种实用工具,它提供了一个模拟Linux命令行环境,使得Windows用户可以在熟悉的命令行界面下执行Git操作。Git Bash安装过程简单,只需下载Git的安装包,然后按照向导进行安装...

    git使用总结

    ### Git使用总结 #### 版本管理工具:Git **Git**是一款分布式版本控制系统,用于追踪计算机文件的更改,并协调由多人共同开发的项目。它最初由Linus Torvalds于2005年创建,旨在支持Linux内核的开发。与传统的...

    Git版本管理用法详解

    Git提供了多种工具和方法来简化这个过程,比如`git svn`命令集。 协同开发是Git设计的初衷之一,它支持多人并行开发同一个项目。在协同开发的过程中,一般会有一个中央仓库作为团队协作的核心,每个开发者会在本地...

    GIT 压缩包 适用于压缩包式安装git

    6. 社区支持:Git有庞大的社区支持,提供了丰富的命令行工具和图形界面工具,如SourceTree、GitKraken等,以及GitHub、GitLab和Bitbucket等在线托管平台。 对于压缩包式安装Git,通常包含以下步骤: 1. 下载压缩包...

    git的使用说明

    ### Git的使用说明 #### Git的历史背景与发展 Git 的起源可以追溯到...通过了解 Git 的历史背景、与 SVN 的对比、基本工作流程及其安装与使用方法,可以帮助开发者更好地掌握这一工具,提高开发效率和代码管理能力。

    SVN中文教程 SVN简明教程 SVN学习笔记

    - Linux和Mac用户可以使用命令行工具`svn`,通过包管理器如apt或brew来安装。 2. **SVN仓库创建** - SVN仓库是存储项目文件的地方,可以本地创建,也可以在服务器上创建。使用`svnadmin create`命令可以创建本地...

    Ubuntu下安装界面化SVN客户端,并可访问windows的SVN Server

    在Ubuntu操作系统中,尤其是对于那些习惯于使用图形界面进行版本控制操作的用户,通过命令行使用SVN可能会显得不那么直观。为此,本教程将详细介绍如何在Ubuntu环境下安装界面化的SVN客户端——RabbitVCS,使其能够...

    Git讲义 .pdf

    版本控制工具是用于管理软件源代码或其他...Git是一个高度复杂的工具,通过深度讲解其使用方法,包括多个案例的讲解,可以帮助开发者高效地学习和运用Git来管理代码版本。这些知识点的学习是学习Git不可或缺的资源。

    .svn删除软件

    2. **命令行**:在命令提示符或终端中,使用`rm`(Unix/Linux)或`del`(Windows)命令配合通配符`*.svn`来删除所有`.svn`文件。 3. **脚本**:编写批处理或Shell脚本,遍历指定目录及其子目录,自动删除`.svn`...

    GIT使用手册

    - **简单快捷:** Git提供了简单易用的命令行界面,同时具有高效的文件管理和版本控制能力。 - **高效:** Git通过快照而非增量的方式存储文件变化,大大提高了文件存储和检索的效率。 - **分布式:** Git的分布式...

    git安装包的zip文件

    Git是一款分布式版本控制系统,由林纳斯·托瓦兹(Linus Torvalds)为Linux内核开发而创建,后来被广泛应用于各种软件开发项目。它允许开发者追踪代码更改历史,协同工作,并有效地管理项目源代码。这个zip文件包含...

Global site tag (gtag.js) - Google Analytics