SVN
集中式管理工具(Cornerstone与VisualSVN-server 地址: https://pan.baidu.com/s/1o9AsFAa 密码: htbk, VisualSVN-server官网下载地址 https://www.visualsvn.com/server/download/)
1、部署svn服务端
(1)安装VisualSVN-server(就是windows平台的一个软件,双击安装就行了)
(2)安装好后打开软件,创建一个服务端的仓库,默认会有三个文件夹
1> Trunk(主干)
目前项目正在开发的版本
2> Tags(只做存储作用,不能在此文件夹下开发)
存放已经上线的重大版本
3> Branches(分支)
当发生重大bug或者有新需求时
(3)创建用户,并设置权限
2、初始化代码仓库
(1)在本地创建一个文件夹FirstRepository用于存放代码
(2)cd到FirstRepository目录下,checkout服务器的代码仓库
svn checkout http://192.168.1.103/svn/FirstRepository --username=manager --password=manager
(3)checkout服务器的代码仓库后,在trunk目录下创建项目Text(注:不要勾选git,两个同时使用会冲突)
(4)将本地trunk目录下的文件Text添加到本地仓库
svn add Text
(5)将Text提交到服务器的代码仓库
svn commit -m "注释"
3、忽略掉一些不需要共享的文件
xcshareddata : 记录了远程仓库的地址
xcuserdata : 包含了 件夹的打开结构/当前 户停留在哪 个 件中/ 户打的 断点
服务端部署到此结束===============================
平时使用只需要checkout服务器的代码仓库到本地(仅需要做一次),每开发完一个模块或者晚上下班时commit,早上上班时update就行了
svn常用命令
svn checkout :下载服务器的代码到本地 (简写svn co)
svn commit :将改动的文件提交到服务器(简写svn ci)
svn update :更新服务器的代码到本地 (简写svn up)
svn add :向本地的版本控制库中添加新文件
svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
svn revert :撤销之前的一切修改
svn merge :将两个版本之间的差异合并到当前文件
// 示例
svn checkout https://192.168.1.106/svn/Weibo/ 将服务器代码仓库的内容下载到命令行当前目录下
svn commit -m “修改了User.m文件” 就将命令行所在路径中所有改动过的文件提交到服务器
svn add /Users/Desktop/workspace/Weibo/branches/User.m 添加User.m文件到本地版本控制库中(也可以添加文件夹)
svn delete /Users/Desktop/workspace/Weibo/branches/User.m 移除文件
svn update [PATH] 将服务器的代码更新到本地,如果不写路径就是全部更新
svn update -r 版本号 将代码恢复到某个版本
常见问题:
Conflict : 冲突
(p) postpone :两者同时存在
(mc) mine-conflict : 当出现代码冲突的时候,使用我的代码。覆盖服务器代码
(tc) theirs-conflict :当出现代码冲突的时候,使用服务器的代码。覆盖本地代码
<<<<<<< .mine
该位置是我的代码
=======
服务器的代码
>>>>>>> .r11
版本回退
1、svn update -r 2.0 先将代码更新到想要回退的版本(这里以2.0为例)
2、做些无痛痒的修改,然后commit覆盖掉服务器的代码就行了
注:svn一定要经常update,尽量避免冲突
=========================================================================
Git
Git核心概念
工作区(Working Directory):仓库文件夹里除.git目录以外的内容
版本库(Repository):.git目录,用于存储记录版本信息
暂缓区(stage)
分支(master):git自动创建的第一个分支
HEAD指针:用于指向当前分支
Git工作流程
Git工作原理:
git add :把文件修改添加到暂存区
git commit :把暂存区的所有内容提交到当前分支
安装GIT
查看Git版本
git version
如果系统没有安装Git可以通过以下方式下载安装:
Windows:https://git-scm.com/download/win
设置GIT
在我们能用Git工作之前,我们需要做个一次性的配置。为了Git能跟踪到谁做了修改,我们需要设置你的用户名,密码。
git config --global user.name "your_username"
git config --global user.email your_email@domain.com
设定push的默认值为simple(详情请参考:https://www.cnblogs.com/x_wukong/p/6837792.html)
git config --global push.default simple
到此配置完成,如果换电脑,需要重新配置。
创建一个远程的代码仓库(GitHub)
创建本地仓库
1、创建一个文件夹作为本地仓库,cd到该目录下,clone刚才在GitHub上创建的代码仓库
git clone github代码仓库地址
然后在包含.git 文件夹(本地代码仓库)的路径下初始化项目。
2、如果以前有项目,在已有的项目目录下 git init创建本地仓库
git remote add origin 远程仓库名称 (添加远程仓库,也就是将本地仓库与远程仓库关联)
关联后,使用命令git push -u origin master第一次推送master分支的所有内容
添加文件
git add . 添加目录下所有文件
git add myFile, otherFile 添加特定文件
提交文件
git commit -m "本次提交注释"
git status 查看当前目录下文件的加载状态
创建分支
git checkout -b new_feature 创建并切换到新建的分支
或者先创建分支,然后手动切换到分支
git branch new_feature 创建分支
git checkout new_feature 切换到分支
git branch查看当前项目的所有分支(本地)
// 将本地的dev分支与远程仓库的dev分支关联
git branch --set-upstream dev origin/dev
合并分支(新的分支需要先add,commit,push)
首先需要移动到主分支
git checkout master
然后合并分支
git merge new_branch
合并完成后查看下文件,如果没问题就可以删除分支了
git branch -d new_branch
删除一个分支
git branch -d new_branch 把分支合并到主分支,然后删除分支
git branch -D new_branch 直接删除分支
分支相关的命令
查看远程分支:git branch -a
查看本地分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换(本地)分支:git checkout -b <name>
将本地分支推送到远程服务器:git push --set-upstream origin <name>
从远程服务器拉取online分支与本地的online分支merge:git pull origin online:online
如果本地当前分支就是online的话:git pull origin online
从远程仓库拉取一个本地不存在的分支:git checkout -b 本地分支名 origin/远程分支名
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
使用命令git branch –set-upstream ; test为创建的分支
$ git branch --set-upstream debug origin/test :将本地分支debug与远程test分支关联
版本回退
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
,就回到了场景1,第二步按场景1操作。
查看历史版本
git log 查看提交历史
git reflog
git版本号:a6a87425f2939e874b57591c53d597a73f0a52c7
回退到上一个版本:git reset ––hard HEAD^
回退到上上一个版本:git reset ––hard HEAD^^
回退到上N个版本:git reset ––hard HEAD~N(N是一个整数)
任意版本之间切换:git reset ––hard 版本号(版本号用前7位即可)
上面这些操作只是将本地的代码仓库回退,如果想要回退远程的代码仓库:
一、如果是自己的远程分支
git push -f 强推覆盖掉远程代码仓库的代码就行了
注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支
二、如果是共享的远程分支
详情见:http://blog.csdn.net/fuchaosz/article/details/52170105
GIT常用命令
git help :git指令帮助手册
git config :git的配置信息相关(修改的是.git/config文件)
配置用户名:git config “user.name” 用户名(用于跟踪修改记录)
配置邮箱:git config “user.email” 邮箱(用于多人开发间的沟通)
查看配置信息:git config –l
编辑配置信息:git config –e(用vim编辑,:wq是退出vim编辑器)
将此设置应用到整个系统中:git config ––gloabal
查看某个文件的状态:git status 文件名
查看当前路径所有文件的状态:git status
查看某个文件的修改日志:git log 文件名
查看当前路径所有文件的修改日志:git log
查看某个文件的最新改动的地方:git diff 文件名
查看当前路径所有文件最新改动的地方:git diff
在当前路径初始化仓库:git init
在其他路径初始化仓库:git init 仓库路径
保存某个文件到暂缓区:git add 文件名
保存当前路径的所有文件到暂缓区:git add .
提交某个文件到分支:git commit -m ”注释” 文件名
保存当前路径的所有文件到分支:git commit -m ”注释”
回退到上一个版本: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 仓库的URL
下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
git pull:下载远程仓库的最新信息到本地仓库
(git pull 可以从远程库中获取某个分支的更新,再与本地指定的分支进行自动merge(即使本地不存在这个分支))
git push:将本地的仓库信息推送到远程仓库(默认只推送当前分支,这叫做simple方式)
git push origin :将当前分支推送到origin主机的对应分支。
git checkout -- file:丢弃工作区的修改,就是让这个文件回到最近一次git commit或git add时的状态,“--” 不能省略。
git remote add <远程仓库简称> <远程仓库地址> :添加远程仓库
git remote -v : 查看远程仓库信息
git remote rm origin : 与名为origin的远程仓库解除关联
文件的状态:
'A' 被添加到本地代码仓库
'C' 冲突
'D' 被删除
'I' 被忽略
'M' 被修改
'R' 被替换
'X' 外部定义创建的版本目录
'?' 文件没有被添加到本地版本库内
'!' 文件丢失或者不完整(不是通过svn/git命令删除的文件)
'~' 受控文件被其他文件阻隔
git多人开发先commit,再pull,最后push原因:
先commit把代码提交到本地仓库,然后将远程服务器的代码拉过来与本地仓库的代码合并,看有没有冲突,如果有的话就解决冲突,然后add,commit,push
大神网站:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000