猿问

裁剪Git提交/压缩Git历史记录

裁剪Git提交/压缩Git历史记录

我每隔几分钟将我的代码签入一个Git分支中,这些评论最终会变成“一切都坏了,重新开始”之类的东西,以及其他荒谬的东西。

然后每隔几分钟/每小时/每一天,我就认真地提交一条真正的评论,比如“修正bug#22.55,第三次”。我如何区分这两个概念?我希望能够删除所有我经常提交的,只留下那些严重的。


墨色风雨
浏览 1129回答 3
3回答

LEATH

用软复位代替重基对壁球历史的影响我觉得长度Vonc的答案说明了很多-字面上说-是多么复杂git rebase是。这是我的扩展对我的一个问题的另一个回答.你有一支树枝ticket-201你的分支master..你想假装所有的提交ticket-201从来没有发生过,但你一举完成了所有的工作。软重置到分支点,使用git reset --soft hash哪里hash中的提交散列。ticket-201原木。使用Add提交更改,然后提交。现在,分支历史将只有第一次提交和新的提交与新的内容。在不同的分支中根据任意提交创建历史使用重置,您可以重写您认为合适的历史,尽管您的编辑将失去拥有正确的时间戳的魅力。假设您不关心这个问题(文件上的时间/日期可能就足够了?),或者如果您想在执行过程中篡改提交,可以执行以下步骤:检查一个新的分支机构commit0(假装这是一个哈希):git checkout -b new-history commit0现在你可以从commit5: git reset --hard commit5切换回索引点:git reset --soft commit0提交,这将是分支中的第二次提交。这个想法简单、有效、灵活。

天涯尽头无女友

用南瓜代替最近,我在另一个分支工作squash..另一个分支名为temp,然后我使用git merge temp --squash将其带入被推送到服务器的真正分支。工作流是这样的,假设我在Ticket65252:git branch -d temp #remove old temp bbranch git checkout -b temp # work work work, committing all the way git checkout Ticket65252 git merge temp --squash git commit -m "Some message here"优于使用rebase?不那么复杂了。优于使用reset --hard然后reset --soft?不太容易混淆,也不容易出错。
随时随地看视频慕课网APP
我要回答