【机器之心】工作流一目了然,看小姐姐用动图展示10大Git命令( 三 )
本文插图
输入 git status 后 , 你会看到我们仍然可以访问在之前的提交上做过的所有修改 。 这很好 , 这意味着我们可以修复这些文件的内容 , 之后再重新提交它们!
硬重置
有时候我们并不想保留特定提交引入的修改 。 不同于软重置 , 我们应该再也无需访问它们 。 Git 应该直接将整体状态直接重置到特定提交之前的状态:这甚至包括你在工作目录中和暂存文件上的修改 。
本文插图
Git 丢弃了 9e78i 和 035cc 引入的修改 , 并将状态重置到了 ec5be 的状态 。
还原(Reverting)
另一种撤销修改的方法是执行 git revert 。 通过对特定的提交执行还原操作 , 我们会创建一个包含已还原修改的新提交 。
假设 ec5be 添加了一个 index.js 文件 。 但之后我们发现其实我们再也不需要由这个提交引入的修改了 。 那就还原 ec5be 提交吧!
本文插图
完美!提交 9e78i 还原了由提交 ec5be 引入的修改 。 在撤销特定的提交时 , git revert 非常有用 , 同时也不会修改分支的历史 。
拣选(Cherry-picking)
当一个特定分支包含我们的活动分支需要的某个提交时 , 我们对那个提交执行 cherry-pick!对一个提交执行 cherry-pick 时 , 我们会在活动分支上创建一个新的提交 , 其中包含由拣选出来的提交所引入的修改 。
假设 dev 分支上的提交 76d12 为 index.js 文件添加了一项修改 , 而我们希望将其整合到 master 分支中 。 我们并不想要整个 dev 分支 , 而只需要这个提交!
本文插图
现在 master 分支包含 76d12 引入的修改了 。
取回(Fetching)
如果你有一个远程 Git 分支 , 比如在 GitHub 上的分支 , 当远程分支上包含当前分支没有的提交时 , 可以使用取回 。 比如当合并了另一个分支或你的同事推送了一个快速修复时 。
通过在这个远程分支上执行 git fetch , 我们就可在本地获取这些修改 。 这不会以任何方式影响你的本地分支:fetch 只是单纯地下载新的数据而已 。
本文插图
现在我们可以看到自上次推送以来的所有修改了 。 这些新数据也已经在本地了 , 我们可以决定用这些新数据做什么了 。
拉取(Pulling)
尽管 git fetch 可用于获取某个分支的远程信息 , 但我们也可以执行 git pull 。 git pull 实际上是两个命令合成了一个:git fetch 和 git merge 。 当我们从来源拉取修改时 , 我们首先是像 git fetch 那样取回所有数据 , 然后最新的修改会自动合并到本地分支中 。
本文插图
很好 , 我们现在与远程分支完美同步了 , 并且也有了所有最新的修改!
Reflog
每个人都会犯错 , 但犯错其实没啥!有时候你可能感觉你把 git repo 完全搞坏了 , 让你想完全删了了事 。
git reflog 是一个非常有用的命令 , 可以展示已经执行过的所有动作的日志 。 包括合并、重置、还原 , 基本上包含你对你的分支所做的任何修改 。
本文插图
如果你犯了错 , 你可以根据 reflog 提供的信息通过重置 HEAD 来轻松地重做!
推荐阅读
- 机器人:青岛造运输机器人打败五家外企 成功进驻世界最大中转枢纽港
- 「时间」iPhone se2这机器放在现在这个时间,真的有点奇怪
- #科技如梦#iPhone se2这机器放在现在这个时间,真的有点奇怪
- [机器人]从昆虫身上找灵感,研发人员用3D打印批量制造机器人群 | 硬科技
- 公司:AT&T将提供云平台为XENEX公司的消毒机器人提供物品清洁服务
- 机器之心:几行代码搞定ML模型,低代码机器学习Python库正式开源
- 「机器人」科学家使用集成神经网络改变机器人步态
- #3DMGAME#索尼申请陪玩机器人专利 能感知玩家情感并做出反馈
- 「」2.5D视觉系统“Eyes”实现机器人应用的极致简易操作
- ■广东领先!工业机器人领域专利申请量占全国28%