git相关

gerrit用户指南:

资料:Gerrit 用户指南 · gerrit-user-guide

上述有介绍git 基础的命令,以及如何review,review并修改代码之后如何重新提交等操作

git指令

一、基础操作

git log   / git status   / git diff  / git add / git commit / git push

二、进阶&实践问题

1、git commit --amend

commit生成提交之后,又对代码进行了一些修改,不想生成新的commit,可以使用git commit --amend覆盖上一次的提交,输入后不需要任何操作,ctrl+x退出后直接生效,如果要修改commit的说名信息见git commit --amend 修改git提交记录用法详解 - 知乎

实际使用中的动机是:如果不合并的话,会生成两次commit,在push时如果topic一样,每次jenkins自动编译时会将两个版本都拉出来编译。此外,如果第一次commit修改了L1~L100的代码,第二次修改了 L100~150的代码,不进行git commit --amend时,git diff只有L100~L150的代码,而git commit --amend后,个git diff可以看到L1~L150,连着第一次提交的所有更改

git commit --amend

2、git reset

接第一条,如果git commit之后,想要撤销,即恢复上一次的提交,但想保留本地代码,使用git reset

git log # 已经看不到被覆盖的提交了,只有最新一次的提交
git reflog # 可以看到所有的提交,见下图
git reset ed8761ec  # 即恢复了被覆盖前的编号为ed8761ec的commit,且保留了本地的修改
# 再次git status和git diff能够看到本地的修改,
# 就可以重新做git add 和commit 以及push等操作了
git status
git diff
# 如果不想要本地的修改 可以用git reset --hard,不过慎用

参考 https://blog.csdn.net/qq_17034717/article/details/79536873?ydreferer=aHR0cHM6Ly9jbi5iaW5nLmNvbS8%3D

3、git rebase

如果不小心已经生成了两次commit,且都push了之后,想要合并两个patch,使用git rebase

合并后将无效的patch在gerrit页面上点击abandon,丢弃掉,再git diff查看,然后重新 git commit --amend 和 git push ***

git log
git rebase -i HEAD~2  // 从HEAD版本开始往过去数 2 个版本,可以修改为任意数字
# 接着修改提交:
# pick 85697ee This is first commit.
# squash ee461c1 This is second commit.
# squash 326e415 This is third commit.
# 上面的意思就是把第二次、第三次提交都合并到第一次提交上。
# nano编辑器: ctrl+x 退出,退出时会提示是否保存,输入y保存即可
git add -u
git rebase --continue  

详细介绍参考 https://zhuanlan.zhihu.com/p/91911809

4、git cherry-pick 和 git stash save

动机:基于主分支 main 创建了local分支,并在 local分支 上进行了部分的代码优化,优化或添加了部分代码C,这时候主分支 main 更新了,变成了新的main分支,就需要将主分支的更新和自己更新的这部分代码合并,也就是又基于最新的主分支代码,又有自己更新的这部分代码C

分为两种情况:

第一种:自己的这部分更改还没有提交,即更改在工作区和暂存区中,在本地分支L上使用git stash save

git branch -vv # 确认现在是处于local分支
git status     # 查看在你上次提交之后是否有对文件进行再次修改
git diff        # 查看修改的代码
git stash save "更改描述"   
# 这一步将修改暂存至堆栈区 ,此时再使用git status查看就成了干净的工作区了
git stash list   查看暂存的修改list
git checkout main   切换至主分main
git pull  拉取最新的main分支代码
git checkout -b local_new origin/main   基于最新的main分支代码创建local_new分支,并切换至local_new分支
git stash apply stash@{0} 
# 将第三步时暂存的修改应用至local_new分支,{}中的编号需要修改为自己想要appy的stash

参考: https://blog.csdn.net/tpz789/article/details/113150456

第二种:自己更改的这部分已经提交了,也就是工作区和暂存区已经没有你更改的这部分代码了,则需要使用 git cherry-pick

git status     # 应该是干净的工作区,因为你已经提交了
git diff        # 应该也没有更改,因为已经提交了
git checkout main   切换至主分main
git pull  拉取最新的main分支代码
git checkout -b local_new origin/main   #
基于最新的main分支代码创建local_new分支,并切换至local_new分支
git cherry-pick local  # 将原来local分支上做的更改cherry-pick过来

注意chrry-pick时需要确认是否有冲突,具体可以查看git cherry-pick的详细介绍

gitlab相关操作

一、fork代码

点击fork按钮即可

二、fork之后修改代码

三、提交merge request

jenkins介绍

Jenkins详细教程 - 知乎

一、jenkins是什么?

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

二、CI/CD是什么?

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值