首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从本地和反向提交/合并中删除不需要的文件

从本地和反向提交/合并中删除不需要的文件
EN

Stack Overflow用户
提问于 2014-06-27 03:31:20
回答 2查看 316关注 0票数 0

我的仓库现在一团糟..。

我有一个混乱的合并和承诺..。我想回到一个特定的提交,因为它有干净的文件。现在,我在本地有几个filename.orig,而且由于我正在经历的冲突,它出现在最近的合并中。我希望将我的本地文件还原为干净提交(删除所有的垃圾),并删除所有坏的提交/合并,并使干净提交主。这个是可能的吗?

这就是我提交历史的样子:

代码语言:javascript
运行
复制
Merge (sha-1) ->
Clean Commit (sha-2) -> 
bad commit (sha-3) ->
bad merge (sha-4) ->
bad merge with .orig (sha-5)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-28 00:45:57

正如我在评论中已经指出的,您的问题基本上是如何将Git存储库还原为以前的提交?的重复,其中最高投票的答案提供了两个与您相关的解决方案。

解决方案1:硬复位

你说过你已经按下遥控器了。没关系,如果您没有与其他人共享您的分支,那么您可以简单地对要恢复的提交进行硬重置,然后强制回推到您的遥控器:

代码语言:javascript
运行
复制
git reset --hard sha-2
git push origin HEAD -f

警告:当您与其他人共享分支时,不要这样做,或者至少如果您在远程分支上丢弃这样的提交,那么至少对他们不太好。这些其他人可能有他们自己的工作,基于旧的提交,您正在丢弃,所以它创造了更多的工作,让这些用户重新同步他们自己的提交与新的重置分支。

如果由于上述原因不能使用此解决方案,则可以使用以下替代解决方案,如如何将Git存储库还原为以前的提交?中所述。

解决方案2:还原

此解决方案只需通过创建反向修补程序的新提交来恢复以前的提交。即使其他用户正在共享您的分支,这也是安全的,因为它不会丢弃新的提交,它只是创建新的提交,因此与之同步并不像丢弃提交一样混乱:

代码语言:javascript
运行
复制
git revert --no-edit sha2..sha5

这将恢复范围( sha2,sha5)中的提交,其中sha2是独占的起点,这意味着它不包含在revert中。然后你可以把结果推到遥控器上,

代码语言:javascript
运行
复制
git push origin HEAD

文档

补充说明

我试图把这个问题作为如何将Git存储库还原为以前的提交?的翻版来结束,但是看起来这个问题没有得到足够的票数,而且可能没有结束,所以我决定我最好回答它,以防它不是。

票数 1
EN

Stack Overflow用户

发布于 2014-06-27 07:02:30

试着使用:

代码语言:javascript
运行
复制
git reset --hard <previous-commit-hash>

这会将所有内容重置为以前的提交。你将得到你的previous-commit-hash的新副本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24443502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档