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

推荐订阅源

S
Secure Thoughts
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
GbyAI
GbyAI
L
LINUX DO - 最新话题
A
Arctic Wolf
T
Tor Project blog
G
GRAHAM CLULEY
I
InfoQ
博客园_首页
IT之家
IT之家
The Register - Security
The Register - Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
N
Netflix TechBlog - Medium
K
Kaspersky official blog
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
U
Unit 42
PCI Perspectives
PCI Perspectives
量子位
P
Palo Alto Networks Blog
S
Securelist
T
Troy Hunt's Blog
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
罗磊的独立博客
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
NISL@THU
NISL@THU
C
Cisco Blogs
T
Threatpost
有赞技术团队
有赞技术团队
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
The Exploit Database - CXSecurity.com
Cloudbric
Cloudbric
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - 黄铨

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