git(分布)、svn(集中)等版本控制系统

git是什么?

git是Linus大神花了两周时间自己用C写了一个分布式版本控制系统,白话就是建一个"花园",大家在你们瞎捣鼓,然后一起观赏

git跟svn的区别?

1. git是分布式版本控制系统
   svn是集中式版本控制系统;
2. 集中式版本控制系统必须联网,而分布式需要联网,有局域网足够了;
3. 集中式需要固定服务器(中央服务器),分布式不需要,版本库在每个人自己电脑上就一个完整版;
4. 多人协作:集中式上传服务器,再下载预览,很吃带宽;分布式只需要互相推送即可,简洁方便;
5. 安全性:由于分布式每个人都有一个完成的版本库,即使部分人的电脑掉了、版本库玩坏了,也不用担心,去拷一份,拿来直接用,但集中式统一一个服务器,如果服务器出现问题,那将是毁灭性的伤害
6.相比来言,分布式简单、效率、稳定也可以认为是一个不错的优点

常用的命令有哪些?

常见git命令:

创建分支: git branch mybranch
查询本地存在的branch:git branch
查询远程的branch:git branch -r
查询本地和远程branch:git branch -a
切换分支: git checkout mybranch
创建并切换分支: git checkout -b mybranch
切换到master分支:git checkout master
下载到当前目录:git clone
更新master主线上的东西到该分支上:git rebase master
更新mybranch分支上的东西到master上:git rebase mybranch
强制从git 中删除某个文件:git rm -f ‘files’
提交更新:git commit -a
查看提交的id:git log –oneline
对最近一次commit的进行修改:git commit -a –amend
查看 workspace 与 index 的差别:git diff
commit之后,如果想撤销最近一次提交(即退回到上一次版本)并本地保留代码:git reset HEAD^
合并分支:(merge from) git checkout master
git merge mybranch (merge from mybranch)
删除分支: git branch -d mybranch
强制删除分支: git branch -D mybranch
列出所有分支: git branch
查看各个分支最后一次提交: git branch -v
查看哪些分支合并入当前分支: git branch –merged
查看哪些分支未合并入当前分支: git branch –no-merged
从其他Git库的branch或tag或refs下载对象和引用到本地,但不会合并到本地的branch分支:git-fetch
从默认远程库fetch所有内容:git fetch
从origin远程库fetch所有内容:git fetch origin
更新远程库到本地: git fetch origin
从其他Git库的branch或tag或refs下载对象和引用,然后合并到当前分支:git pull
将远程的branch分支的最新版本取到本地的origin/branch分支里,同时合并到本地的branch分支:git pull
git pull = git fetch +git merge
在新基准的基础上,将本地基于旧基准的commits再做一遍:git rebase
推送分支: git push origin mybranch
取远程分支合并到本地: git merge origin/mybranch
取远程分支并分化一个新分支: git checkout -b mybranch origin/mybranch
删除远程分支:    git push origin :mybranch
rebase: git checkout mybranch
git rebase master (rebase from master)


常见svn命令:

1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
简写:svn co

2、往版本库中添加新的文件
svn add file

3、将改动的文件提交到版本库
svn commit -m “LogMessage” [-N] [–no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
简写:svn ci

4、加锁/解锁
svn lock -m “LockMessage” [–force] PATH
svn unlock PATH

5、更新到某个版本
svn update -r m path
简写:svn up

6、查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
2)svn status -v path(显示文件和子目录状态)
简写:svn st

7、删除文件
svn delete path -m “delete test fle”
简写:svn (del, remove, rm)

8、查看日志
svn log path

9、查看文件详细信息
svn info path

10、比较差异
svn diff path(将修改的文件与基础版本比较)
svn diff -r m:n path(对版本m和版本n比较差异)
简写:svn di

11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path

12、SVN 帮助
svn help
svn help ci

13、版本库下的文件和目录列表
svn list path 显示path目录下的所有属于版本库的文件和目录简写:svn ls

14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mkdir PATH…
每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、mkdir URL… 创建版本控制的目录。
每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。

15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。
用法: revert PATH… 注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录

16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法:
1、switch URL [PATH]
更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将 服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、switch –relocate FROM TO [PATH…]
改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动 (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用 这个命令更新工作副本与仓库的对应关系。

17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH… 注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。

18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。 svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)

19\删除目录下所有的 .svn 隐藏子目录

find . -name “.svn” -print0 | xargs -0 rm -rf

git pull 和 git fetch区别?

相同点:将远程仓库更新到本地
不同点:
git-pull 处理过程比较糙,细节问题都隐藏了,弱代码出现问题,则找出问题困难重重,直接把下载合并同时完成
git fetch 结合git merge分步操作,减少出错带来的损失

怎么将一个文件回退到指定版本?

1. 进去文件所在目录 git  log 文件名 查看更改记录
2. 找到想要回退的版本号:xxx
    通过 git reset xxx 文件名 先将版本库和暂存区中的该文件回退到历史版本XXXX
3. 用暂存区中该文件的历史版本xxx覆盖工作区中对应的文件,使工作区、暂存区、版本库三者统一

git裸存储库指的是?

git init 命令创建的是普通库
git init --bare 命令创建的裸库
两者比较,裸库只有.git目录,无类似本地库的文件结构

说说你理解的git hooks? 应用场景?

git hooks向程序注入一个或多个线程(脚本),在服务端和客户端可分别挂钩
应用场景:
客户端向服务器push后,服务器接收后的自动运行脚本,可以实现master和develop分支的自动更新


<span style="font-size:18px;">
    cd path/to/service/repo
    env -i git checkout master
    env -i git pull origin master
    env -i git checkout develop
    env -i git pull origin develop
</span>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值