Git学习

之前工作中一直使用SVN,最近切换到Git。众所周知,Git越来越受到重视,使用场合越来越多,本文主要针对自己Git实践来总结Git的常用命令及在团队如何使用。由于命令及概念用法太多,不可能完全记住且容易忘记。基于此,整理经常使用的命令及相关概念,以便日后查阅之用。

MacDown Screenshot

Git的优势

  • 速度快。不管是同步代码,分支切换,合并分支等速度非常之快。

  • 对网络的依赖相对较低。本地修改的代码即使是断网的情况下可以保存到本地仓库,不会丢失。

  • 分布式。每一个Git结点都包含了远程仓库的所有内容,都是一个完整的备份。

Git 安装

使用命令安装

mac: brew install git

ubuntu: apt-get install git

windows下可以安装Cygwin,然后在Cygwin中用apt-cyg install git命令进行安装

当然,也可以从Git官网上自行下载。

Git常用命令

#git的配置文件为.gitconfig,在用户主目录下代表是全局配置,在项目目录下代表项目配置
git config --list //显示所有配置信息
git config --global user.name [username] //配置用户名
git config --global user.email [email] //配置邮箱
git config --global alias st status //配置别名git st=git status

ssh-keygen -t rsa -C [your email]  //生成用户主目录下.ssh文件夹下的id_rsa(私钥)

git init //当前目录新建git仓库
git init [dir] //在dir目录下新建git仓库
git clone [url] //将项目从url对应的远程仓库下载到本地
git init + git fetch = git clone

git add [file] //将文件添加到暂存区
git add .  //将当前目录下所有文件添加到暂存区
git commit -m "提交说明" //将暂存区文件提交到本地仓库,-m参数代表提交说明,必填,提交阅读性
git status //查看仓库当前状态
git log  //查看提交日志
git log --pretty=oneline  //显示单行日志
git log --graph --pretty=oneline --abbrev-commit //查看合并情况日志
git reflog //查看历史执行git命令

git diff //查看工作目录与暂存区之间的差别
git diff --cached 或git diff --staged //暂存区与上次提交之间的差别,即下次要提交到HEAD的内容
git diff HEAD //工作目录与HEAD的差别
git diff [branch] //当前分支与分支branch的差别
git diff --stat //查看简单的diff结果
git diff sha1 sha2 //查看两个历史版本的差别

注:git diff 输出结果符号意义
--- a/file1  ---代表改动前版本
+++ a/file2  +++代表改动后版本
@@开头 @@结尾 代表一个差异小结
举例:@@ -123 + 1410 @@
     源文件从12行开始的3行与目标文件从14行开始的10行构成了一个差异小结
     -代表源文件即改动前的文件,+代表目标文件即改动后的文件

git reset [--soft | --mixed | --hard] [commitID] //恢复提交
git checkout -- [file] //撤消未提交的文件
git reset HEAD [file]  //将暂存区的文件撤消到工作区

git branch [-a|-r] //查看分支,当前分支高亮且带*号 -a所有分支,-r远程分支
git branch [branch] //创建分支branch
git branch [-d|-D] [branch] //删除分支branch -d:删除 -D:强制删除
git branch -m [oldname] [newname] //分支重命名
git checkout [branch] //切换到分支branch
git checkout -b [branch] //创建分支branch并切换到新建分支

git merge [branch] 合并分支branch到当前分支,快进合并 fast-forward
git merge --squash [branch] git commit -m "" //压合合并
git cherry-pick [commitID] //多个提交可加-n参数  择选合并
git merge --no-ff -m "提交说明" //禁用fast-forward合并,创建一个新的commit

git push [remote] [local branch] : [remote branch] //推送到远程仓库,若省略local branch, 则代表删除该远程分支;
                                                    若省略remote branch,则代表上传到远程分支,如果远程不存在该分支,就重新创建
git push origin --delete [branch] //删除该远程分支
git fetch -P //删除没有与远程分支对应的本地分支
git pull [remote] [remote branch]:[local branch] //从远程仓库下载,再与本地分支合并
git fetch //只从远程下载不进行合并,再使用git merge合并
git pull = git fetch + git merge
git pull --rebase //从远程仓库下载合并,但与git merge合并不同,git pull如果冲突,修改一次直接提交。合并时会生成一个合并结点。
                    git pull --rebase解决冲突时需要多次修改提交,合并时不会生成合并结点,分支始终在一条线上,其原理是先将本地的修改存到暂存区,
                    然后下载远程仓库到本地工作区,最后再把暂存区保存的修改合并到工作区
git pull --rebase = git fetch + git rebase

git fetch --all git rest --hard [branch] //放弃本地修改,强制更新

git tag //查看标签
git show [tagname] //查看标签详情
git -a [tagname] -m [说明文字] commitID //在某次commit打上标签 -a:签名 -m:说明
git tag -d [tagname] //删除标签
git push origin [tagname] //推送标签到远程仓库
git push origin --tags //推送所有标签到远程仓库
git push origin : refs/tags/[tagname] //删除远程仓库上的标签

在团队中使用Git

Git中常用分支

master分支 保留最近生产环境代码,也是最近release,该分支只能从其他分支合并,不能直接修改该分支。

dev分支 开发时的主干分支,包含所有将要发布release的代码,该分支主要合并其他功能分支。

feature分支 开发一个新功能分支,一旦开发完成合并到dev分支上,进入下一个release。

release分支 从dev分支创建,完成release后合并到master和dev分支中。

bugfix分支 从master分支创建,一旦修改完成之后,合并到master和dev分支中。

分支协调工作

各分支具体协调工作流程如下图所示。由于下图描述的已够清楚,在这里就不在详细阐述。如还有不明白的地方,请告之我。

MacDown Screenshot


以上仅是针对自己在工作中常用的Git用法进行简单的总结,不足之处,欢迎批评指正。^_^ ^_^

内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值