【revert命令顾名思义就是对修改过的东西进行回滚操作,一般有2种情况发生时需要用到回滚的操作】
【备注:svn的文件路径是相反的,如果提示,skipped,请试将路径分隔符修改下,继续操作】如下:

1.1【修改过的东西没有递交(commit)】
svn revert [-R] xxx_file_dir //如果需要回滚的是一个目录则加上-R(递归)可选参数
备注:类似于git checkout . ///撤销所有的修改
1.2 【改动的东西并且递交了】 //TBD 待验证
这种情况下,用svn merge命令来进行回滚。
步骤如下:
1)执行#svn update命令保证工作区文件是最新的,比如最新版本号是20
2)然后找出要回滚的确切版本号:
执行svn log xxx_file_dir
假设根据svn log日志查出要回滚的版本号是10,如果想要更详细的了解情况,可以使用svn diff -r 20:10 [xxx_file_dir]
3)回滚到版本号10:
执行svn merge -r 20:10 xxx_file_dir
4)提交回滚:
svn commit -m "注释..."
提交后版本变成了29
完毕
补充: 【删除未纳入版本控制中的文件】//未生效,原因待查
svn st | grep '^?' | sed -n 's/^?[ \t]*//p' | xargs rm -rf
或者是:
svn st | grep '^?' | awk '{print $2}' | xargs rm -rf
3.1 svn直接使用commit 便提交到【远程】仓库.
而git需要有git push操作,方可.
【即 svn服务器,常是内部服务器搭建,相对于git,不介入互联网,而显得似乎更加安全】
3.2 同目录下,同一套code只能有一个远程仓库. //TBD
【如果想连接多个仓库,则需要放到不同目录,服务器上的svn仓库也需要部署多份】
3.2 svn可以单个文件提交【即可以天提交单个修改】,而git是一次性提交所有的修改。
3.3 svn没有添加到版本库中的文件,使用svn status 时,会以 ‘?’开头,表示未知,因为未纳入版本控制中.git 则会以为A开头,表示新建的,待Add操作.
3.4 撤销未提交到的文件修改.
svn 并不能使用svn checkout filename来操作. 【svn chekout 是检出仓库的操作】
git 则可以git checkout .filename来操作
svn是使用svn revert filename 【详见1.取消当前文件修改 】
1). 基本的使用
git add 文件名[相对路径] 或者 git add .
git commit -m "备注信息"
git pull 远程仓库名[默认为origin,可修改] 分支名 //提交代码之前先要拉取远程仓库相应分支代码 [也不是必须先要pull,可以直接push,如果报了冲突,会提醒需要git pull 然后解决冲突,之后push]
git push 远程仓库名[默认为origin,可修改] 分支名 //如果有冲突解决完,按照git add/commit 之后push 没有冲突,成功push即可.
2). Git 分支操作
添加远程分支 : git remote add upstream <Nick Gitlab 地址> //upstream是远程仓库名 默认是origin
【备注: 这里用的是GitLab,或者GitHub均可,上述命令均使用,但若用微软TFS,则需要使用 **** 命令暂时未记住,稍后补上.】
查看分支:git branch [--list] //参数可选
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name> //如果尚未是尚未合并的分支,需要用git branch -D <name> git一般常有提示,请认真阅读英文提示信息,常会有下步思路.
拉取线上分支[github或者gitlab]到本地分支:
方式有三:
获取线上分支,但本地没有该分支
参考:
https://blog.csdn.net/zhangxiaoyang0/article/details/79286825
方法一
使用如下命令:
git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x。
采用此种方法建立的本地分支会和远程分支建立映射关系。
方式二
使用如下命令:
git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
采用此种方法建立的本地分支不会和远程分支建立映射关系。
方式三
跟方式二其实是一样的,但是更加方便,直接切换到相应分支下.
①git fetch 远程仓库名
如: git fetch disney-delta
②git checkout 相应的分支名
如: git checkout DELTA-2928_Retailer_site_db_api
3). Git 版本回退
本地仓库版本回退:
git log [--oneline] //查看提交记录,并记下要回退的commit id
git reset --hard commit id //commit id即上面对应的commit id 如:f634478d2f3d514b5ed77f6b1c8bd5533779fc21
本地仓库回退至远程仓库版本:
git reset --hard commit id //commit id 是远程仓库commit id,可以到远程仓库中查看.如 gitlab中8861eee5 本地commit id 与远程仓库commit id 明显长度不同,应为不同的id.
4). git rebase合并多次commit
git log 或者git log --oneline [推荐使用后者,不过看不到都是谁的提交]
//之后使用wq或者q均可. //离开可视模式.便可以重新输入命令
git rebase -i HEAD~4 //4表示要合并的提交的数量,最新的四个[从下往上数,最新的提交在下面,可以通过提交时间来确认]
或
git rebase -Idevelop //develop是基准线 rebase即重新设置基准线,即有参考才行
git add .
git rebase--continue
git log //查看确认
取消git rebase 命令 //即取消rebasing状态
git rebase --abort
详细参考:
使用git rebase合并多次commit :
https://blog.csdn.net/yangcs2009/article/details/47166361
聊下 git rebase -i - 王清培 - 博客园
5). webhook 的使用[未使用到,暂不记录]
在gitlab 中使用webhook 实现php 自动部署git 代码
资源参考:
在gitlab 中使用webhook 实现php 自动部署git 代码_个人文章 - SegmentFault 思否
gitlab - GitLab 实现代码自动部署_个人文章 - SegmentFault 思否 //比较推荐
Jenkins进阶-Gitlab使用Webhook实现Push代码自动部署(3) - 梦雨情殇 - 博客园
Gitlab上hooks:
https://code.***.io/william_ning/d****/settings/integrations
https://code.***.io/nick_cai/d****/settings/integrations//猜测
6). 查看记录
查看最近提交修改的文件: git log --name-status
...