网站首页 > 技术文章 正文
基本概念
如果不清晰上面的四个概念,请查看廖老师的git教程
这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改
存起来。后来用多了,也就明白了为什么。git是一个“版本管理工具”,大家在写东西的时候都用过“回撤”
这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用“回撤”是找不回来的。而“版本管理工具”
就是记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。
当然,上面我只说了一部分git的好处,只为后面的东西作为铺垫。因为,后面会说到三个关于git上面如何“反悔”、 “回到任意时候的代码”,其实就是上面说的原始的“回撤”升级版,版本管理工具的“回撤”。
checkout、reset、revert这三个指令
- checkout:清空工作区的修改
- 清空
工作区
的修改git checkout changed_file
,清空所有工作区
的修改git checkout .
- 切换分支
git checkout branch_name
(在切换分支之前,需要清空工作区,提交到本地版本仓库
或者移除工作区的东西
) - 快速查看某个版本的代码
git checkout commit_id/HEAD~last_version_num
,切换到一个临时分支,内容就是指定的版本内容
- 清空
- reset:撤销某次提交(commit),并把这次提交的所有修改放到工作区
git reset HEAD~last_version_num/commit_id
,注意:这个操作修改历史,所以push到
远程仓库会出现问题,可以通过-f
参数,实现强制推送。
- revert:回到之前的某个版本的状态,并创建一个新的提交。
git revert HEAD~last_version_num/commit_id
,创建一个新的commit,该内容为指定的
版本的内容,注意:这个操作并不会重写历史,也就是原来的commit还是存在的。
git reset 和git revert的区别:
git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进
在回滚这一操作上看,虽然效果差不多,但是日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
参考
- 上一篇: 从零开始一个git操作实例,图文并茂
- 下一篇: 小丁带你走进git的世界三-撤销修改
猜你喜欢
- 2025-03-12 git stash的那些事儿
- 2025-03-12 实用干货分享(3)- Git常用操作干货分享
- 2025-03-12 Git使用的奇技淫巧
- 2025-03-12 总结常用的git命令
- 2025-03-12 Git使用指南 | 教你轻松学会Git
- 2025-03-12 git 子模块
- 2025-03-12 数据工程师必备的 Git 命令
- 2025-03-12 Git常用指令
- 2025-03-12 适合初学者的Linux基础知识指南
- 2025-03-12 小丁带你走进git的世界三-撤销修改
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)