SVN和Git的一些用法总结
(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
(1)提交修改到远程的git repository的基本流程(前提是你当前目录已经处于git版本控制之下)
添加当前目录下所有文件到“即将提交的列表”(当然也可以指定某些指定的文件,将 . 换成指定的文件即可):
1
|
git add . |
将修改提交到本地:
1
|
git commit -m "对本次修改的注释写在这里" |
提交到远程的git repository:
1
|
git push |
(2)删除远程git repository中的文件
假设要删除当前目录下的abc.txt文件(指远程git repository中的),则:
1
|
git rm abc.txt |
然后提交到本地:
1
|
git commit -m "delete a file" |
然后提交到远程的repository:
1
|
git push |
文章来源:http://www.codelast.com/
(3)TortoiseGit提交代码前弹出错误提示“username and email must be set...”的解决办法
Git Commit(提交)的时候,如果Tortoise弹出一个错误对话框,提示你必须先设置用户名和Email,那么你理所当然地按它的指引点击“Yes”去设置,奇葩的是,在我的Win7上,TortoiseGit settings→Git页面中的“Name”和“Email”竟然无法输入文字(仿佛输入框是只读的一样)!就算我找到了这篇教程,也无济于事。
后来我又找到了这篇教程,尝试用命令行去设置,果然OK了:
1
2
|
d:\git\bin>git.exe config --global user.name "你的用户名" d:\git\bin>git.exe config --global user.email "你的Email" |
执行这两条命令之后,再回到TortoiseGit的settings→Git页面,就看到Name和Email已经设置好了。
(4)解决每次 git pull 的时候都提示输入密码的烦人问题
执行以下命令:
1
|
git config --global credential.helper "cache --timeout=360000" |
其中,timeout值表示缓存密码多少时间(单位是毫秒还是秒,我不记得了),把它设置为一个非常大的值即可,然后你再git pull的时候,按提示输入密码之后,下一次就不会再提示输入密码了(在timeout时间之内)。
文章来源:http://www.codelast.com/
(5)Windows下的TortoiseGit每次push的时候都提示要输入密码的问题
可以通过修改TortoiseGit的配置来解决:
在设置界面中,“Git”设置子项中,点击“编辑本地.git/config”,会打开一个文本文件,在最后加上如下内容并保存:
1
2
|
[credential] helper = store |
然后再push一次并输入密码,TortoiseGit就可以记住你的密码啦。
(6)To be added...
http://www.codelast.com/?p=5719
SVN和Git的一些用法总结的更多相关文章
- SVN和Git的一些用法总结(转)
转载请注明出处:http://www.codelast.com/ 以下都是比较基础的操作,高手们请绕道,不必浪费时间来看了. (A)SVN (1)查看日志提交的时候一般会写上注释,如果要查看提交日志, ...
- 转: SVN和Git的一些用法总结
转:http://www.codelast.com/?p=5719 转载请注明出处:http://www.codelast.com/ 以下都是比较基础的操作,高手们请绕道,不必浪费时间来看了. (A) ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- Git 安装及用法 github 代码发布 gitlab私有仓库的搭建
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 这个版本控制软件,有 svn还有git,是一个工具. git是由linux的作者开发的 git是一个分布式版本控制系统 ...
- SVN和Git对比梳理
在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版 ...
- 代码管理(四)SVN和Git对比
在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版 ...
- 【转】SVN与Git比较
摘要Svn是目前得到大多数人认可,使用得最多的版本控制管理工具,而Git的优势在于易于本地增加分支和分布式的特性,可离线提交,解决了异地团队协同开发等svn不能解决的问题.本文就这两种版本控制工具的异 ...
- SVN和Git代码管理小结
SVN和Git代码管理小结 之前,先用的是SVN,后来用了Git,最近又在用SVN. 关于代码管理,写几句. 由于自己参与的项目,人通常不超过10个人,版本不是很多,协作比较正常,感觉SVN ...
- 02 SVN 与 Git 的优缺点
上一篇博客大致聊了聊关于版本控制系统的周边,这一篇我们就来继续唠唠作为近年来最受欢迎的两个版本控制系统的优缺点吧. 聊优缺点之前,先简单了解一下这两个这两个版本控制系统好了: 关于 SVN SVN 概 ...
随机推荐
- BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了 ...
- 任意2个io直接驱动LCD1602,并且不需外加芯片(转)
http://www.amobbs.com/thread-4301955-1-1.html *此处只摘录部分内容,详细内容请关注原贴. 这就是电路,细心的朋友会发现实物图中有几个贴片的阻容件,秘密就在 ...
- php各项下载地址
Apache2.4下载地址 http://www.apachehaus.com/cgi-bin/download.plx PHP5.6下载地址 http://php.net/downloads.p ...
- boost锁的使用
boost锁的概述 boost库中提供了mutex类与lock类,通过组合可以轻易的构建读写锁与互斥锁. ▲ mutex对象类 mutex类提供互斥量,主要有两种:boost::mutex,b ...
- ural1553 Caves and Tunnels
Caves and Tunnels Time limit: 3.0 secondMemory limit: 64 MB After landing on Mars surface, scientist ...
- nginx 设置进程title
刚好看到nginx设置进程title的源码,因此做一些总结. linux进程实际是以argv[0]处的值来作为进程的title的,因此若需要修改进程的title只需要修改argv[0]处的值即可. 简 ...
- FreeRTOS 使用指南(转)
源:FreeRTOS 使用指南 繁星电子开发团队制作 作为一个轻量级的操作系统,FreeRTOS 提供的功能包括:任务管理.时间管理.信号量.消息队列.内存管理.记录功能等,可基本满足较小系统的需要. ...
- psql命令
原文:http://blog.csdn.net/smstong/article/details/17138355 psql# shell 环境下,查看当前所在的数据库的命令是: select cur ...
- ASer Python学习笔记
最近又开始学习python了,希望自己能坚持下去. 我看的书是thinkingpython,是在豆瓣的python学习组看到的. 连续看了3,4天左右,然后尝试着写了个小程序,复制文件的,代码如下: ...
- 编写一个python脚本功能-备份
版本一 解决方案当我们基本完成程序的设计,我们就可以编写代码了,它是对我们的解决方案的实施.版本一例10.1 备份脚本——版本一 #!/usr/bin/python # Filename: backu ...