git 代码回滚_Git代码回滚

9dd07b3bfa4ca3c1ff8b24d6ca6e7c29.png

新建工作区

首先先新建一个工作区

mkdir demo 
cd demo
git init # 初始化

68f4a8b74c3cdcde9b873f8e9658a0ff.png

添加一个 test.txt文件,并在里面添加 这是版本v1.0

vim test.txt # 新建一个test.txt文件并用vim打开编辑

添加test文件到暂存区

git add test.txt

提交文件到本地仓库中,并打上tag

git commit -m "这是v1.0"
git tag -a v1.0 -m "这是1.0版本"

可以使用以下命令来查看所有tag

git tag

也可以查看某个tag的详情

git show v1.0 # v1.0是刚刚给commit打上的tag

710999eb33cb29cf90f886e10dbd2fbb.png

提交第二、第三次版本

在第二次版本中给test.txt加上:这是版本v2.0 这句话,然后提交以及为本次提交打上tag

03671b156557bb22c1dcb6a84e979599.png

在第二次版本中给test.txt加上:这是版本v3.0 这句话,然后提交以及为本次提交打上tag

此时的test.txt文件内容为

9b4f957754e34b95bc55399e2185a8b9.png

可以使用 git log查看 提交的历史记录

b9a4fa56ff3dfb621f6207e76dd1c30d.png

就可以很清晰的看出提交的历史和对应的tag,其实tag只是对某次提交记录起了一个别名

版本回退

比如我们在版本v1.0中出现了bug需要修复,我们需要回退到版本1的代码中,那么流程应该是:

  • 1. 获取v1.0时的 commit id,根据id回退版本
  • 2. 将回退的版本新建一个分支,master分支返回最新的版本
  • 3. 修复bug,然后将bug修复后的分支合并到master分支

那么开始第一步,回退版本

使用 git show v1.0就可以查看 v1.0时提交的详情了

710999eb33cb29cf90f886e10dbd2fbb.png

其中a40c5c8f6c29f44d09946689e8011865237ee836就是commit id

我们只需要获取前6位即可,git会自动识别获取完整的id

使用以下命令来回滚到v1.0

# git reset --hard [commit id]
git reset --hard a40c5c

bde15f871ba16a01d00a176bd3070e9e.png

此时就已经是版本1时候的代码了

开始第二步,新建分支

使用以下命令新建分支并切换到该分支

# git checkout -b [branch-name]
git checkout -b bugfix

使用 git checkout master返回 master分支

然后再用 git log发现只有一次提交记录

b005162131375c4d353b30320064c4a6.png

这是因为这时候版本回退了,目前是版本1,git log是查不到第三次提交记录的,需要使用这个命令

git reflog

104875ead9fdd7d51e4f52a16ef63c2d.png

可以看到所有的操作记录都显示出来了,前面的字符串就是操作id

回到版本三的代码

git reset --hard 936f006

644d91a43ce55a2d2876c798c79b6a4e.png

可以看到已经回到了版本三中了

最后是第三步,修复bug,然后合并分支

首先切换到bugfix分支

git checkout bugfix

然后编辑test.txt文件,暂时就添加一条:修复版本1bug

64e690878cd7a356e0d682916234fdd2.png

接着提交到本地仓库中

git add test.txt
git commit -m "修复版本1中的bug"
git tag v1.1

合并分支

git checkout master # 切换到master分支
git merge bugfix    # 将bugfix分支合并到master分支

0956044812dbee12ad2f477ea1b2a2e7.png

红色高亮的说明了都修改了test.txt文件,现在再看一下合并后的test.txt文件内容是什么样的

318ac2f425ba9bc59efc958f04e7aab7.png

其中:

  • <<<<<<Head和======之间是当前分支master的内容
  • ======>>>>>>>bugfix之间是bugfix分支的内容

把这些符号去除就解决了冲突了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值