我每隔几分钟左右就会将我的代码检查到一个Git分支中,而这些评论最终会出现“Everything broken again again”和其他荒谬之处。
然后每隔几分钟/小时/天,我会做一个真正的评论,例如,“修复了第22,5号错误,第3次。” 我如何将这两个概念分开?我希望能够删除所有频繁提交,只留下严肃的提交。
答案 0 :(得分:97)
答案 1 :(得分:27)
使用软重置代替重新基础来压制GIT历史记录
我认为VonC答案的长度说明了 - {字面意义 - 关于git rebase
有多复杂。这是我another answer to a question of mine的扩展名。
ticket-201
分支的分支master
。你想假装所有来自ticket-201
的提交都没有发生,但是你一次性完成了所有的工作。git reset --soft hash
软重置到分支点,其中hash
应该是ticket-201
日志中的提交哈希值。从不同分支的任意提交中制作历史
使用重置,您可以根据需要重写历史记录,但您的编辑将失去拥有正确时间戳的魅力。假设你不关心它(你的文件的时间/日期就足够了,也许?),或者如果你想要随意摆弄提交,你可以按照以下步骤操作:
commit0
结帐新分支(假装是哈希):git checkout -b new-history commit0
commit5
:git reset --hard commit5
git reset --soft commit0
这个想法简单,有效,灵活。
答案 2 :(得分:6)
使用壁球
最近,我一直在另一个分支机构工作并使用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
的优势?不那么容易混淆且容易出错。
答案 3 :(得分:0)
使用git rebase -i一起挑选和压缩你的提交。