上班用svn和Git

在公司进行项目开发,使用SVN,Git是必须的,所以今天详细总结一下平时使用Git和SVN的基本使用和一下技巧,供大家参考学习。如有错误,请大家指正!


一 、 SVN

svn基本操作:[插入]


  

服务器端和客户端的示意图:[插入]


使用环境

要想利用SVN管理源代码,必须得有2套环境

服务器
用于存储客户端上传的源代码
可以在Windows上安装VisualSVN Server
大部分情况下,公司的开发人员不必亲自搭建SVN服务器

客户端
上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
可以在Mac上使用命令行VersionsCornerstone
开发人员就属于客户端这个角色

SVN客户端命令

svn checkout 下载服务器的代码到本地 (简写svn co
svn commit :将改动的文件提交到服务器(简写svn ci
svn update 更新服务器的代码到本地 (简写svn up
svn add :向本地的版本控制库中添加新文件
svn deletesvn remove :从本地的版本控制库中删除文件(简写svndelsvnrm
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.LNJJonathan合力完成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

gitSVN的简单对比
速度
在很多情况下,git的速度远远比SVN

结构
SVN是集中式管理,git是分布式管理

其他
SVN使用分支比较笨拙,git可以轻松拥有无限个分支
SVN必须联网才能正常工作,git支持本地版本控制工作
旧版本的SVN会在每一个目录置放一个.svngit只会在根目录拥有一个.git
git的工作流程
[插入]

SVN一样,你可以通过命令行敲指令或者图形界面客户端使用git
Mac上,比较好用的git图形界面客户端有
SourceTree
下载地址:http://www.sourcetreeapp.com/download/

GitHub
下载地址:https://mac.github.com
不过它是专门为GitHub网站而设计的

git常用指令
git helpgit指令帮助手册
查看其他指令的做法:githelp 其他指令

git configgit的配置信息相关修改的是.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
1、注册一个 GitHub 帐号: https://github.com
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的基本操作就说这么多了!大家如果有问题,欢迎提问!


1. git提交分支相关 在本地新建分支,保证和远程分支一样 git checkout -b 分支名 如果分支已存在,只需要切换的话 git checkout 分支名 提交前先把代码
如何用JAVA编写一个简单用户登陆界面? 我想利用JAVA编写一个简单的用户登陆界面,用于信息管理系统的,应该如何着手呢?请高手指教! 搜索更多相关的解决方案: JAVA  界面  编写 
随着各种移动设备的更新换代,移动互联网呈飞速发展状态,移动应用更是呈指数增长。在这种情况下,App的测试需求正逐年增大,已有赶超Web测试的势头。今天,就结合我个人的工作经历,已经相关的专业知识,
这篇文章我是第一次看见,关于app兑换码我也是第一次知道这么用。转给大家,希望能够对大家有所帮助。 App Store兑换码(促销码)是开发者市场营销过程中常常被忽略的一点,开发者并没有挖掘出兑换
目前Win11系统还是拥有周期的更新,并且我们电脑会自动下载这个补丁来让电脑更加安全,但这些升级包并不会在第一时间自行删除,而是会堆积在C盘中,这会导致我们存储空间严重不足,那么要如何去删除呢?
我们在使用电脑的时候有需要切换用户登录,windows10系统下怎么切换用户呢?下面由学习啦小编为你整理了windows10开机界面怎么切换用户的相关方法,希望对你有帮助! windows10
Mysql 更改数据存储目录,只讲干货 1. 找到原存储位置 2.暂停MySQL服务 3.将1查到的文件夹中的data文件剪切到其他盘符 4.更改MySQL服务下的My.ini文件 5.重
关于node的使用已经很久了,使用范围也很广,似乎有前端的地方就有node,那么来思考一个问题,node到底是用来干嘛的呢?本文从五个大的方面对该问题进行了解释。 我们知道node的出现,让前
一、下载最新的软件版本:node # wget [url]ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0rc3.tar.gz[/url]安
目录 第一部分 单项选择题.....................................................................................
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。 进入“中文语音识别”目录,然后运行下面的命令 pocketsphinx
快来领取红包
您的专属优惠已准备好!
打开微信扫一扫,关注公众号~
SiteMap 网站地图 文本地图 RSS