| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> git tag相关 -> 正文阅读 |
|
[开发工具]git tag相关 |
git tag创建、远程推送、回退以及强推push -f_苦咖啡-coffe的博客-CSDN博客_git tag 一、给本地仓库分支打轻量级tag标签 $ git branch $ git tag v1.0 $ git tag 方法是找到历史提交的commit id,然后打上就可以了 $ git log --pretty=oneline --abbrev-commit $ git ?tag v0.9 471fd27 $ git tag $ git show v0.9 二、上面我们打的tag是轻量级的也就是一般的tag没有注释,下面看看有注释的标签 $ git tag -a v0.1 -m "version 0.1 released push url" d5a65e9 $ git show v0.1 ok 到这里我们就给相关分支的某些提交版本添加了tag,但是git tag命令是对本地仓库分支加的标签,为了能把标签同步到远程服务器,我们需要做如下操作 三、把本地仓库分支tag推送到远程服务器 1.push单个tag,命令格式为: git push origin [tagname] $ git push origin tag_20170908 2.push所有tag,命令格式为: git push [origin] --tags git push --tags git push origin --tags 当远程有多个服务的时候远程服务名称是必须的,而如果远程只有一个远程服务则远程服务名称可以省略。 ok 到这里添加 tag标签push tag标签结束…… 以上命令经检验通过,如果不起作用,请在Git控制台上确认你的账号是否有权限推送Tag。这一点很重要,因为这个原因,我有过一段时间很抓狂。 四、通过标签恢复代码 1、查看标签的详情,找出打标签的那次提交的commit id 查看本地所有标签 $ git tag $ git show v0.1 2、版本回退(将主干分支回退到某个版本) 下面我们就通过commit id回到发版本时候的代码去 git reset --hard d5a65e 当然写commit ?id是可以回滚到任何版本,单在真实环境下我们用的比较多的应该是返回到上个版本即最后一次提价的版本这个我们可以使用如下命令 git ?reset ?--hard HEAD 特别注意:通过标签回退版本后,要马上拉一个分支,然后当前主干分支要立即回到原来的位置,否则正在开发的代码可能白干了,接着在刚拉的分支上修改bug,修改完毕合并到主干上 3、拉分支 主干分支回退版本后,从回退后的主干分支立即拉取分支,这里取名bugfix分支,假如这里我们是从master主干分支回退后再拉新分支的,流程如下: (1) 切换到master分支 git chekcout master git ?pull git checkout -b bugfix git ?branch 4、主干分支立即回到原来的位置 (1) 首先回到主干分支 git chekcout master 回退版本需要commit id,向前进同样也是的。还记得我在第三次提交完毕后,用git log命令查看提交记录吗,现在我们需要第三次提交的commit id,再用git log命令: git ?log git reflog (3) 回到回退前版本 git reset --hard aaff087 (4) 切换到bugfix分支,修改bug git checkout bugfix 当我们在bugfix分支上修改了bug后要把修改后的代码add、commit git ?add fileName 在bugfix分支上修复了紧急bug之后,就可以发一个新的版本,之后就要把修复后的代码合并到我们的主干上,不然下次发版本这个bug还是存在的。合并用下面的命令: git checkout master //先切换到主干上 在合并后你会发现,有冲突,这是必然的,因为我们在两个分支上修改了同一个文件,我们可以使用git status来查看那些文件冲突了。 git ?status 其中<<<<<<Head到======这个是当前分支,也就是master分支的内容,从======到>>>>>>>bugfix,是bugfix分支的内容? ok 到此我们的代码回滚就搞定了!!! 五、git log和git reflog 的区别 具体一个例子,假设有三个commit: (1) git ?commit -m"add test1.c" 如果执行git reset --hard HEAD~1则 删除了commit3,如果发现删除错误了,需要恢复commit3,这个时候就要使用git reflog 因为回退原因使用git log是看不到commit3的commit id的 六、强推 push -f 1、git checkout ?master :本地切换到master分支 2、git pull : 本地分支跟新为最新(非必须,只是习惯) 3、git log 、git ?reflog :查看提交记录,寻找合适的commitId (注意这里的commitid一定要注意,因为我们开发分支的版本号在合并的时候也会被合并过来) 4、git ?reset --hard commitid :回滚到指定的版本、git reset --hard HEAD:会滚到之前一个版本 这里为什么会写两个那,因为HEAD 之前版本就是master的版本也就是各个开发分支merge时的版本所以不会存在commitid是分支版本的问题。 5、git ?push : 将本地代码推到远程,但是这时会报错误,不会让你推因为你的本地版本比远程低一个版本,所以他会要求你更新为最新的在push但是这样的话就会有问题啊,把我们回滚的又覆盖了,所以我们不能更新,所以不能使用这个命令,只能使用下面的6这个命令了!!! 6、git push -f ?origin master(修改这里的master为你的分支名称,不要把你的分支强推到master分支) :将本地代码强制推到远程,也就是用本地代码覆盖远程。 OK这样回退就完成了! t查看tag命令: git tag git checkout -b branch_name tag_name |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:28:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |