惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
小众软件
小众软件
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
S
Secure Thoughts
O
OpenAI News
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
H
Heimdal Security Blog

博客园 - 黄铨

AutoHotKey 简易自动化脚本的一些资料 Powershell 主题美化学习过程 - 黄铨 - 博客园 [实战]如何对比两个数据库之间的变化 - 黄铨 - 博客园 [实战]分钟级简易数据库执行日志 Hello, .NET微软技术广州俱乐部 F7 - Visual Studio - switch between aspx and "codebehind" Mac OS X El Capitan(10.11)显示隐藏文件命令失效解决方法 undo/delete a commit on git 博文阅读密码验证 - 博客园 Move System Databases in MS SQL SERVER 部署Microsoft.ReportViewe 关于TFS强制undo他人check out 几段查看数据库表占用硬盘空间的tsql How to perform validation on sumbit only TFS 2012 Disable Multiple Check-out kill the vs2012 preview tabs 在Chrome Console中加载jQuery Using NuGet without committing packages to source control(在没有把包包提交到代码管理器的情况下使用NuGet进行还原 ) 关于asp.net网站下aux路径访问问题
发个老梗,关于GIT如何回退已经提交的COMMIT,以及如何撤销未完成的合并。
黄铨 · 2018-12-18 · via 博客园 - 黄铨

无论是当年的VSS再到后来的TFS,然后是SVN再到今日的GIT,只要是跟源代码管理(Source Control)相关的管理工作都可能带来这一问题,那么这里就简单说一下。

(顺便贴个以前的工作笔记https://www.cnblogs.com/matong/p/5619760.html

任何还没有PUSH到远端(origin),但已经被提交到本地(local)的commit,都可以用以下命令回退。

这cmd的意思就是说跑git.exe里的reset方法,用当前的HEAD回退一步,这一步或许不止包含一个变动(changes),并且用--hard 硬的指令。

关于各种方法,参数的使用请详查git官方文档。

当然,你可以跑多次这个命令来一步步回退到你想要的地方,你也可以找到想要回退commit-id来进行

git reset --hard <sha1-commit-id>

注意:这样回退你所修改的代码就会直接被清掉了,但是可以用git log来查看。这个不展开了。

当然,如果你的commit已经push到远端(origin)了,你还可以通过以下命令强行覆盖提交历史(history),这一句是跑在上面回退本地提交之后的。

git push origin HEAD --force

有童鞋就可能奇怪了,怎么这里用的是git push,其实原因就是我们这里做的根本不是什么回退动作,而是直接用我们刚刚回退整理好的版本强行覆盖(--force)远端(origin),无论你是不是在做回退的操作,其实只要是需要覆盖远端的时候都会用到这个。

但这里可能会产生一个新的问题,就是你想要强制回退且强行覆盖的commit,如果被其他同事拉取(pull)了的话,当这位同事再次推送(push)这个分支的时候,那么这个原本被干掉的commit依然会被提交到现有分支上。目前不知道怎样才是一个最好的方法(这里找到了吕毅MVP大神的解决方案,很不错建议看一看),我们自己得话是喊这个分支相关的人,让他们把他们本地这个分支改个名字,然后重新检出(checkout)这一分支。

OK,到这里已经能完整地回退一个或一个已经提交的commit了,接下来另一个问题,如何撤销未完成的合并。

什么叫“未完成的”合并?

就是起了一个合并头(merge),但是没有完成提交动作(commit),这就是未完成的合并,这个我们经常会用在一些检查点,看看我已经提交的东西跟主线(master)或者其他开发主线的总差别有多少;或者是在尝试做合并的时候,艾玛,上千个冲突差点想要删库的时候。

当然,其实是可以先把合并给提交了,然后利用前面的git rest方法来回退的,对,这个也是我以前的笨方法。但是有更加有效的,那就是

Mission Abort, repeat, Missioern Abort. 不好意思,傻逼病又犯了。

嗯,今天就到这里。祝各位码农在撸管撸git的路上越撸越开心,越射越远。

补记录一个https://walterlv.com/post/git-worktree.html