git

git是什么以及它的特点

首先,git是最先进的分布式版本控制系统

版本就是不同的代码,新版本旧版本就是说用新的代码来替代旧的代码

git的特点

  • 对非线性开发模式的强力支持
  • 完全分布式
  • 有能力高效管理类似Linux内核一样的超大项目(速度和数据量)

集中式和分布式的区别:

  • 集中式控制系统版本库是集中存放在中央服务器的,工作需要从中央服务器取得最新版本,干完活后再推送到中央服务器,其工作时需要联网。
  • 分布式版本控制系统没有“中央服务器”每个人的电脑都是一个完整的版本库
git中基本的一些概念
  • 工作区:就是你能在电脑里看到的目录;
  • 暂存区:英文叫stage,或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫做索引;
  • 版本库:工作区有一个隐藏的.git,这个不算工作区,而是Git的版本库;
git的基本操作
  • 创建版本库(git init)

    • 用git init在目录中创建新的Git仓库,会在目录生成一个.git的隐藏文件夹,它是Git用来跟踪管理版本库的
  • 添加到暂存区(git add)

    • git add可以将文件添加到暂存区,作为下次提交的 (部分或全部内容)
    • git add 文件名
    • git add .表示添加当前项目的所有文件(包括文件内 容修改以及新文件)
    • git add -u将修该的文件提交到暂存区,add-u不会 提交新文件(u --update)
    • git add -A 是上面两个方法的合集(A --all)
  • 查看状态(git status)

    • git status 用于查看项目的当前状态,git status -s加-s参数表示查看的是简要信息,“AM"状态表示这个文件在我们将它添加到缓存之后又有改动
  • 查看改动(git diff)

    • 显示已写入缓存与以修改但尚未写入缓存的改动
    • git diff用来查看git stdtus的结果的详细信息
    • git diff --cached 查看以缓存的改动
    • git diff HEAD 查看以缓存的与为缓存的所有改动
    • git diff --stat 显示摘要而非整个diff
  • 向仓库提交代码(git commit)

    • git commit会将缓存区内容添加到仓库中
    • git commit -m “first commit” (-m选项可以提供提交注释,引号里面的是对提交内容的注释)
    • git commit -a (-a选项允许跳过git add这一步)
  • 取消以缓存的内容(git reset HEAD)

    • HEAD 指向的版本是当前版本
    • 执行git reset HEAD 会取消之前git add添加
  • 删除文件(git rm)

    • git rm 文件名/文件
    • 如果删除之前修改过并已经放在暂存区域的话,则必须要用强制删除选项 -f
    • 如果把文件从暂存区域移出,但仍然希望保留在当前工作目录中(从跟踪清单中删除),可使用 --cached选项
    • 当不小心删错时,可以使用"git checkout – 文件”命令将误删文件恢复到最新版本
    • 可以使用-r参数进行递归删除,即如果后面跟是一个目录作为参数,则会递归删除整个目录中的所有目录和文件
  • 移动/重命名(gitmv)移动或重命名一个文件,目录。软链接

远程仓库
  • 添加远程仓库
    • 在github上创建一个在线仓库
    • git remote add origin"https://github.com/yintianyan/库名.git"(将本地已有仓库与远程仓库关联)
    • git push -u origin master(由于远程仓库是空的,第一次推送master分支时,加上-u参数)
  • 克隆操作(git clone)
    • 使用git clone 拷贝一个Git仓库到本地,让自己能够查看该项目,或进行修改
    • git clone ‘url地址’
  • 更新数据(git fetch、git pull)
    • git fetch从远程获取最新版本到本地,不会自动更新merge
    • git pull从远程获取最新版本到本地并merge到本地
git的分支管理

git branch 分支名 (创建新分支名)
git checkout 分支名(切换分支命令)
git merge 合并分支命令
git branch (列出分支基本命令)
git branch -d 分支名(删除分支)

可以使用"git checkout-b分支名"来创建新分支并立即切换到该分支下

  • 解决冲突
    • 当两个分支中对同一行代码作出修改时,就会提示有合并冲突,必须手动解决,使用“git
      status”也可以告诉我们存在冲突文件和文件名,使用“git log”也可以看到合并的情况
    • 通常合并分支时会用到Fast forward模式,这样删除分支后,也会丢掉一些分支信息
    • 合并时可以使用”–no-ff“参数强制禁用Fastforward模式,这样git合并时会生成一个新的commit,然后可以在历史分支看出分支信息
    • git merge --no-ff
  • 分支策略
    • master分支非常稳定,仅用于开发新版本,平时不要直接在上面开发;平时可以和团队成员在dev上开发
  • 查看远程库信息(git remote)
    • 远程仓库的默认名字是origin
    • git remote -v (-v参数可以显示更详细的信息)
  • 推送分支(git push)
    • git push origin master(会推送master分支),如果要推送其他分支如”dev“可使用git push origin dev来推送
  • 多人协作
    • 使用git pull看有没有人远程提交代码,有的话将其合并到本地
    • 如果合并有冲突就解决冲突,并在本地提交
    • 没有冲突或者解决冲突后再用git push origin “分支名” 推送就会成功
回退与撤销
  • 撤销修改(git checkout – file)
    • 会把该文件在工作区的修改全部撤销,即回退到git commit或git add时的状态
    • 命令中的“–”很重要,不然git checkout就是切换分支了
  • git log(历史记录)
    • “–pretty=oneline”参数会精简显示,里面会有一串commit id(用十六进制表示)
  • git reset (版本回退)会把当前版本回退到上一个版本
    • 在Git中,用HEAD表示当前版本,上一个版本就是HEAD,上上个版本就是HEAD^,往上一百个版本会写成HEAD~100
    • 版本回退后,当前的这个版本是不会被删除的,只是HEAD的指向变了
    • 如果回退失误,就需要找到之前版本的commit id
    • git reflog命令会记录你的每一次操作,用来找到commit id
    • 然后用“git reset --hard ‘commit id’“切换到指定版本
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值