git实战---回滚和分布协作

总结

总结1:回滚
查看对应版本的commit_id:

git log
或git reflog

进行回退,commit_id可以是当前版本之后的id:

git reset --hard commit_id

远程同步,远程回退

git push -f

总结2:分布式协作
分以下两类

1,git pull —- working…. —– git add — git commit —- git pull —-git push 直接合并
2. 或者将git pull换成“git fetch —– git diff master origin/master—-git merge ”验证并合并

实践探索过程

场景1:灵活回滚
条件:
提交三个版本,第二个版本在第一版本之上新建函数
第三个版本在第二个版本之上新建文件

目标:
1.是否可以随意切换版本?
2.切换到版本二后新建了一个版本四,是否可以回到版本三?

过程:
1.进行三次提交后,git log显示如下
这里写图片描述
git顺序提交,git reflog显示如下
这里写图片描述

2.git回退到version 1
git reset –hard HEAD^ 回到上个版本,HEAD~100表示回退到前一百个版本。最好将HEAD换成特定版本的ID
回退原理是HEAD指针的变化,改变指针指向即可

git reset --hard 420f

此时git reflog显示如下:
这里写图片描述

可以查看到本地文件已经成功回退。

3.但是如何让远程也成功呢?
git push -f

4.编辑第四个版本
git diff a.py
这里写图片描述
红色表示之前的版本,绿色表示新版本。可以这样理解,将本地(旧版)的-行删掉,新增+指示的行
结果:仍然可以回退到版本三


场景2:分布式协作
条件:
两个人都往版本库中提交代码,比如A提交之后继续研发,此刻B提交了。A研发好之后,又进行提交,此刻发生了什么?

过程:
1. B clone仓库

git clone git@github.com:windycon/rollback.git   

不需要新建文件夹,它会以git上项目名建立目录,进入目录后,会有.git文件,同之前,完全可用
2. 然后编辑b.py新增函数work_info,正常提交,备注信息为“rollback—add function work_info”
3. 此时回到A,新增文件c.py,进行提交,备注信息为”myproject—new file c.py“
执行git push时显示如下:
这里写图片描述
按照提示执行git pull
git pull 弹出编辑框,提示如下,可使用vim编辑命令,编辑信息为“after I new file c.py , then I find it can’t be pushed”
这里写图片描述
4. 保存后,git log显示如下
这里写图片描述
此时A的本地文件也变化了,接着git push可正常进行

这里应该先确认本地和远程的差异,然后进行merge。回去重复实验
5. A回退到version3—4a32 , 不使用git push -f
让远程仓库同B一致,以进行实验:A在git pull前查看变化,以确认是否merge。
B执行git push -f
6. 在A上新建文件c.py ,执行add和commit,不然diff无法显示差异
git fetch origin 必须执行,不然没有差异
7. git diff master origin/master
这里写图片描述
diff显示的结果是对第一个文件进行操作
以上说明本地b.py文件删除红色部分,新增绿色部分可一致。
删掉c.py文件,c.py文件的内容为红色部分。
git log master origin/master 查看提交差异
8.执行git merge master origin/master 也会弹出vim编辑框
此后查看git diff master origin/master如下
这里写图片描述
最后git push即可完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值