玩转 Git 三剑客
苏玲
携程代码平台负责人
60828 人已学习
新⼈⾸单¥68
课程目录
已完结/共 62 讲
第三章:Git与GitHub的简单同步 (4讲)
第五章:Git集成使用禁忌 (2讲)
玩转 Git 三剑客
登录|注册
留言
25
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 21 | 如何让暂存区恢复成和HEAD的一样?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程综述
02 | 安装Git
03 | 使用Git之前需要做的最小配置
04 | 创建第一个仓库并配置local用户信息
05 | 通过几次commit来认识工作区和暂存区
06 | 给文件重命名的简便方法
07 | 通过git log查看版本演变历史
08 | gitk:通过图形界面工具来查看版本历史
09 | 探密.git目录
10 | commit、tree和blob三个对象之间的关系
11 | 小练习:数一数tree的个数
12 | 分离头指针情况下的注意事项
13 | 进一步理解HEAD和branch
14 | 怎么删除不需要的分支?
15 | 怎么修改最新commit的message?
16 | 怎么修改老旧commit的message?
17 | 怎样把连续的多个commit整理成1个?
18 | 怎样把间隔的几个commit整理成1个?
19 | 怎么比较暂存区和HEAD所含文件的差异?
20 | 怎么比较工作区和暂存区所含文件的差异?
21 | 如何让暂存区恢复成和HEAD的一样?
22 | 如何让工作区的文件恢复为和暂存区一样?
23 | 怎样取消暂存区部分文件的更改?
24 | 消除最近的几次提交
25 | 看看不同提交的指定文件的差异
26 | 正确删除文件的方法
27 | 开发中临时加塞了紧急任务怎么处理?
28 | 如何指定不需要Git管理的文件?
29 | 如何将Git仓库备份到本地?
30 | 注册一个GitHub账号
31 | 配置公私钥
32 | 在GitHub上创建个人仓库
33 | 把本地仓库同步到GitHub
34 | 不同人修改了不同文件如何处理?
35 | 不同人修改了同文件的不同区域如何处理?
36 | 不同人修改了同文件的同一区域如何处理?
37 | 同时变更了文件名和文件内容如何处理?
38 | 把同一文件改成了不同的文件名如何处理?
39 | 禁止向集成分支执行push -f操作
40 | 禁止向集成分支执行变更历史的操作
41 | GitHub为什么会火?
42 | GitHub都有哪些核心功能?
43 | 怎么快速淘到感兴趣的开源项目?
44 | 怎样在GitHub上搭建个人博客
45 | 开源项目怎么保证代码质量?
46 | 为何需要组织类型的仓库?
47 | 创建团队的项目
48 | 怎样选择适合自己团队的工作流?
49 | 如何挑选合适的分支集成策略?
50 | 启用issue跟踪需求和任务
51 | 如何用project管理issue?
52 | 项目内部怎么实施code review?
53 | 团队协作时如何做多分支的集成?
54 | 怎样保证集成的质量?
55 | 怎样把产品包发布到GitHub上?
56 | 怎么给项目增加详细的指导文档?
57 | 国内互联网企业为什么喜欢GitLab?
58 | GitLab有哪些核心的功能?
59 | GitLab上怎么做项目管理?
60 | GitLab上怎么做code review?
61 | GitLab上怎么保证集成的质量?
62 | 怎么把应用部署到AWS上?
本节摘要
登录 后留言

全部留言(25)

  • 最新
  • 精选
git reset 有三个参数 --soft 这个只是把 HEAD 指向的 commit 恢复到你指定的 commit,暂存区 工作区不变 --hard 这个是 把 HEAD, 暂存区, 工作区 都修改为 你指定的 commit 的时候的文件状态 --mixed 这个是不加时候的默认参数,把 HEAD,暂存区 修改为 你指定的 commit 的时候的文件状态,工作区保持不变

作者回复: 👍

2018-12-15
2
26
13693113483
老师,我感觉很少会有需要将暂存区的内容恢复成和HEAD一样的。因为如果感觉暂存区的修改没有工作区的内容好,可以直接将工作区的内容添加到暂存区,那么暂存区会以新添加的文件状态为准。

作者回复: 嗯,说的有道理。 可能有一种情况需要吧,比如已经确定不想保留暂存区的变更,其次工作区还没有改好,我想把暂存区恢复到HEAD,以便执行 git diff就能比较工作区和暂存区(也等于HEAD)的差异。

2019-08-25
13
L。__
讲的很基础 很喜欢 期待老师快速更新

作者回复: 好的,抓紧进度

2018-12-14
6
Vee
网上有说要加 --hard? 有什么区别吗?

作者回复: reset命令不加 --hard,则暂存区的内容恢复成HEAD对应的内容,工作区的变更继续保留。 如果加了 --hard,则不管工作区还是暂存区,内容都变回HEAD对应的内容。 大家可以多实践一下。 比较有意思的一个问题:暂存区一个readme文件,工作区对readme继续最变更,也就是工作区和暂存区的readme内容不一样了;请问:此时执行“git reset”命令,工作区的readme文件,可能会有哪几种情况?

2018-12-15
3
5
万想
老师,学完这一节后,我有两个疑问,劳烦老师可以帮助解答~ 1) 假定:HEAD、缓存区、工作区中的readme.md文件内容均不相同,【git reset --hard -- readme.md】命令和【git checkout HEAD -- readme.md】命令的执行结果是一样的,都是讲暂存区、工作区的readme.md文件内容和HEAD指向的保持一致,但是这两者的理解上有什么样的不同呢? 2) 针对“一步”笔记中的--soft参数,我尝试过该参数后,又通过--soft参数指向原来HEAD所在的commit,将HEAD指针所指向的内容修改了回来。使用git log这些命令看上去都和原来没有任何区别。但是在gitk窗口中,有两行记录。不是很清楚这种情况产生的原因。 Local uncommitted changes, not checked in to index Local changes checked in to index but not committed

作者回复: 很好的问题。 1)reset你用了hard参数 ,所以两个命令执行效果相同。注意reset命令的三个参数--hard, --mixed和--soft,除了hard外,你不妨用用其他两个方式再看看。 记住checkout会把暂存区的文件内容同步到工作区,咱们命令中又带上了HEAD,所以,会把HEAD对应的readme.md文件同步到暂存区和工作区。你不带 HEAD 再试试看吧 2)gitk只是好心提醒我们,有些改动的内容没加到暂存区(index),有些没创建commit

2019-01-06
4
阿耀
之前用git用得迷迷糊糊,只是一顿乱add,commit,push,团队小也不是特别规范。看了老师的视频之后觉得讲得特别清晰有条理,让我重新认识了git,挖掘了git更多实用功能,对工作非常有帮助。 同样也和一楼一样催下更新,特别期待将代码提交到远程仓库的时候,如何处理团队的各种协作情况~

作者回复: 有收获,真好。

2018-12-15
4
Li Shunduo
这节已经讲了如何取消暂存区的变更,那么对于已经提交的commit如何取消?

作者回复: 分情况思考一下: 1)最近一次commit想作废,也就是回到HEAD^(HEAD的父亲) 2)不是最近一次的并且只有一个父亲的commit怎么取消? 3)不是最近一次的并且有多个父亲的commit怎么取消? 第3)题稍微有点搞,暂时可以不考虑

2018-12-18
2
3
ysy
老师,您好,是git add之后文件就到了暂存区了吗? git commit之后文件到了本地的分支? 那我在IDEA中直接点击那个commit选项是直接到了本地分支了吗? 还是说相当于先执行git add 然后执行了git commit呢?

作者回复: 你在ide里面执行commit后,再看看历史树是否生成了新的commit。如果是,你的理解就对了

2018-12-15
1
Geek_28b75e
老师,如果工作区目前有合适的方案,暂存区恢复后,岂不是覆盖了工作区的合适方案吗

作者回复: 啊? 工作区的修改如果就是你要的,那你不要 stash pop,直接创建commit就行了。 另外一种情况,可以先把当下工作区的变更用stash储藏起里,然后用git stash list看储藏区有多少次储藏(最新这次存在 stash@{0} 里面),最后用git stash pop stash@{某个数字}把对应的变更调出来。

2019-03-12
小先生
比较有意思的一个问题:暂存区一个readme文件,工作区对readme继续最变更,也就是工作区和暂存区的readme内容不一样了;请问:此时执行“git reset”命令,工作区的readme文件,可能会有哪几种情况? 试了一下:目前只发现有一种情况吧,工作区应该一直是保持最后的文件状态。不知道对不对?

作者回复: 嗯,可以拓展一下,把 reset 的几个参数用一下,--hard,--soft , --mixed ,看看有什么差别。 当然,请在测试环境用这些参数,--hard 是⚠️的,因为会把暂存区和工作区的变更都清除掉。

2019-01-06
收起评论