在公司进行项目开发,使用SVN,Git是必须的,所以今天详细总结一下平时使用Git和SVN的基本使用和一下技巧,供大家参考学习。如有错误,请大家指正!
一 、 SVN
svn基本操作:[插入]
服务器端和客户端的示意图:[插入]
服务器
常见问题总结
git常用指令
用于存储客户端上传的源代码
可以在Windows上安装VisualSVN Server
大部分情况下,公司的开发人员不必亲自搭建SVN服务器
客户端
上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
可以在Mac上使用命令行、Versions、Cornerstone
开发人员就属于客户端这个角色
SVN客户端命令
svn checkout :下载服务器的代码到本地 (简写svn co)
svn commit :将改动的文件提交到服务器(简写svn ci)
svn update :更新服务器的代码到本地 (简写svn up)
svn add :向本地的版本控制库中添加新文件
svn delete、svn remove :从本地的版本控制库中删除文件(简写svndel、svnrm)
svn move:移动文件或者目录或文件更名
svnmkdir:创建纳入版本控制下的新目录
svn revert :撤销之前的一切修改
svn merge :将两个版本之间的差异合并到当前文件
svn info :查看文件的详细信息
svndiff :查看不同版本的区别
svnlog :查看日志信息
svn list :列出版本库下的文件和目录列表
svn status :查看文件状态(简写svnst)
svn help :获取帮助信息(比如svnhelpci)
svn lock :加锁
svn unlock :解锁
SVN项目导出:
将项目检出(下载) 至本地:
svn checkout URL [PATH]
svn co URL [PATH];
注意:这里的中括号[]代表可选(可以省略)
示例
svn checkout https://192.168.1.106/svn/Weibo//Users/user/Documents/workspace
蓝色
代表的是:代码仓库的远程地址
橙色
代表的是:将代码下载到本地的哪个路径
如果省略
橙色
的路径,就下载到命令行当前所在的路径
提交操作:
将改动
过的文件
提交至
服务器
svn
commit
-m "
注释
"
[PATH]
svn
ci
-m"
注释
"
[PATH]
注意:一定要养成写注释的良好习惯
示例
svn commit -m “修改了User.m文件” /Users/user/Desktop/workspace/branches/User.m
橙色
代表的是:提交哪个文件到服务器
如果省略
橙色
的路径,就将命令行所在路径中所有改动过的文件提交到服务器
添加操作 :
提交一个新建的文件到服务器,需要
2
个步骤
1、
添加新建的文件到本地的
版本控制
库中:
svn
add
2、
提交刚才的添加
操作
到服务器
:
svn
commit
向
本地的
版本
控制库
中添加一个新文件
1、
svn
add
PAT
H
示例
svn add /Users/user/Desktop/workspace/Weibo/branches/User.m
橙色
代表的是:添加哪个文件到
版本控制
库中
删除
删除服务器上的某个文件,需要做
2
个步骤
1、
将文件从本地的版本控制库中移除:
svn
d
elete
、
svn
remove
2、
提交刚才的删除操作到服务器:
svn
commit
.
–m
“
注释
”
3、
将文件从本地的版本控制库中移除
svn
delete
PAT
H
示例
svn delete /Users/user/Desktop/workspace/Weibo/branches/User.m
橙色
代表的是:将哪个文件从
版本控制
库中移除
更新
将服务器的最新代码更新到本地
svn
update
[
PAT
H
]
.
当前目录
示例
svn update /Users/mj/Desktop/workspace/Weibo/branches/User.m
橙色
代表的是:更新哪个文件的内容
如果省略
橙色
的路径,就更新命令行所在路径的所有内容
将文件恢复至某个版本
svn
update
-r
版本号
[
PAT
H]
1、
去到公司的第一天,下载公司的代码到电脑上
svn
checkout
2、
修改了某个早已存在的旧文件,然后提交到服务器
svn
commit
–m
‘
注释
’
3、
提交一个自己新建的文件到服务器
svn
add
->
svn
commit
4、
删除一个早已存在的旧文件,然后同步到服务器上
svn
delete
->
svn
commit
5、
将其他同事提交的新代码更新到自己电脑上
svn
update
6、
不小心写错了
很多东西
,想
撤销所写的东西
(
还未把修改提交到服务器
)
svn
revert
xcode
discard
changes
7、
不小心
删错了文件
,想
把文件恢复回来
(
还未把删除提交到服务器
)
svn
revert
x
code
discard
changes
8、
不小心写错了
很多东西
,想
撤销所写的东西
(
已经
把修改提交到服务器
)
svn
update
-r
版本号
9、
不小心
删错了文件
,想
把文件恢复回来
(
已经把删除提交到服务器
)
svn
update
-r
版本号
注意!!!
注意
.
svn这个隐藏目录记录着非常关键的信息
千万不要手工修改或删除这个
.
svn
隐藏目录和里面的文件!否则将会导致本地的工作副本被破坏,无法再进行操作
defaults write com.apple.finder AppleShowAllFiles -bool true
演练步骤
……
1.项目经理准备初期代码
2.LNJ和Jonathan合力完成V1.0的开发工作
3.为完成后的V1.0建立Tags标签,注意文件夹的层次
4.接收到Bug报告,LNJ停止手头工作并备份
5.经理负责建立修订分支,并通知LNJ去解决
6.LNJ从修订分支CheckoutV1.0的版本,并开始修订错误
7.LNJ修订完成后通知经理
8.经理确认之后,将修订内容整合到2.0开发主线
9.经理建立V1.1标签
10.LNJ继续开发工作...
使用SVN我们应该
1.
经常更新
:降低冲突的可能性
2.
提交前需在本机测试通过
:降低将问题代码传到版本库
3.
提交时一定写备注
(
注释
)
:方便其他员工查看和自己以后回顾
4.
对于不需要提交的文件不要提交到版本库
提示
1.
每次修改之前最好先更新
2.
每天下班前提交当天运行通过的代码
3.
每天上班第一件事情更新前一天的代码
二 、 Git
简介:
git
是一款开源的
分布式
版本控制工具
在世界上所有的分布式版本控制工具中,
git
是最快、最简单、最流行的
git的起源
作者是
Linux
之父:
Linus Benedict Torvalds
当初开发
git
仅仅是为了辅助
Linux
内核的开发(管理源代码)
git的现状
在国外已经非常普及,国内并未普及(在慢慢普及)
越来越多的开源项目已经转移到
git
git和SVN的简单对比
速度
在很多情况下,git的速度远远比SVN快
结构
SVN是集中式管理,git是分布式管理
其他
SVN使用分支比较笨拙,git可以轻松拥有无限个分支
SVN必须联网才能正常工作,git支持本地版本控制工作
旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git
git的工作流程
跟SVN一样,你可以通过命令行敲指令或者图形界面客户端使用git
在Mac上,比较好用的git图形界面客户端有
SourceTree
GitHub
不过它是专门为GitHub网站而设计的
git help:git指令帮助手册
查看其他指令的做法:githelp 其他指令
git config:git的配置信息相关(修改的是.git/config文件)
配置用户名:gitconfig“user.name”用户名(用于跟踪修改记录)
配置邮箱:gitconfig“user.email”邮箱(用于多人开发间的沟通)
查看配置信息:gitconfig–l
编辑配置信息:gitconfig–e(用vim编辑,:wq是退出vim编辑器)
设置指令的别名:gitconfig alias.别名原指令名称
设置带参数指令的别名:gitconfig alias.别名“原指令名称 参数”
将此设置应用到整个系统中:gitconfig ––gloabal
git
status
:查文件的状态
查看某个文件的状态:
git
status
文件名
查看当前路径所有文件的状态:
git
status
git
log:查看文件的修改日志
查看某个文件的修改日志:
git
log
文件名
查看当前路径所有文件的修改日志:
git
log
用一行的方式查看简单的日志信息:
git
log
––pretty=oneline
查看最近的N次修改:
git
log
–N(N是一个整数)
git
diff:查看文件最新改动的地方
查看某个文件的最新改动的地方:
git
diff
文件名
查看当前路径所有文件最新改动的地方:
git
diff
git
init
:初始化一个
空
的
本地
仓库,
生成一个
.git
目录
,用于维护版本信息
在当前路径初始化仓库:
git
init
在其他路径初始化仓库:
git
init
仓库路径
git
add
:将
工作区
的文件保存到
暂缓区
保存某个文件到暂缓区:
git
add
文件名
保存当前路径的所有文件到暂缓区:
git
add
.
(注意,最后是一个点
.
)
git
commit
:将
暂缓区
的文件提交到
当前分支
提交某个文件到分支:
git commit -m ”
注释
”
文件名
保存当前路径的所有文件到分支:
git commit -m ”
注释
”
git
reset
:版本回退(建议
加上
––hard
参数,
git
支持无限次后悔)
回退到上一个版本:
git
reset
––hard
HEAD^
回退到上上一个版本:
git
reset
––hard
HEAD^^
回退到上
N
个版本:
git
reset
––hard
HEAD~N
(
N
是一个整数)
回退到任意一个版本:
git
reset
––hard
版本号
(版本号用
7
位即可)
git
reflog
:查看指令使用记录(能够查看所有的版本号)
git
rm
:删除文件(删完之后要进行
commit
操作,才能同步到版本库)
git
clone
:下载远程仓库到本地
下载远程仓库到当前路径:
git
clone
仓库的
URL
下载远程仓库到特定路径:
git
clone
仓库的
URL
存放仓库的路径
git
pull
:下载远程仓库的最新信息到本地仓库
git
push
:将本地的仓库信息推送到远程仓库
工作原理
如果想了解
git
的工作原理,有几个核心概念必须知道
工作区(
Working
Directory
)
:仓库文件夹里除
.git
目录
以外的内容
版本库(
Repository
)
:
.git
目录
,用于存储记录版本信息
暂缓区(
stage
)
分支(
master
):
git
自动创建的第一个分支
HEAD
指针:用于指向当前分支
git
add
和
git
commit
的原理
git
add
:把文件修改添加到暂存区
git
commit
:把暂存区的所有内容提交到当前分支
[插入]
搭建GitHub远程仓库 – 配置SSH Key
2、
打开“
Account
Settings
”
3、
点击“
SSH
keys
”
4、
配置
Mac
的
SSH
Key
的公钥(用于限制提交)
5、
在
Mac
上生成
SSH
Key
(在终端输入下面指令)
cd ~/.ssh
ssh-keygen -t rsa -C"你的邮箱地址”
6、
然后一直敲回车
7、
然后就会在~/.ssh
目录下生成
SSK
Key
的
秘钥对
id_rsa
:私钥,不可泄露
id_rsa.pub
:公钥,可以公开(
将这个文件的内容粘贴到
GitHub
上
)
8、
利用
cat
指令可以查看文件的内容
cat id_rsa.pub
9、然后创建自己的仓库,利用上述的操作命令,就可以进行多人团队开发了!
SVN与Git的基本操作就说这么多了!大家如果有问题,欢迎提问!