Git 别名用于压缩具有特定提交消息的所有提交

发布于 2024-12-17 05:21:28 字数 318 浏览 0 评论 0原文

我一直在使用这个 git-alias,这是我从这里的一个问题中得到的:

wip = !f() { git add -A; git ls-files --deleted -z | git ls-files --deleted -z | git ls-files --deleted -z | xargs -0 git rm; git commit -m“wip”;}; f

所以现在我有一系列的 n 个提交,按顺序,它们都包含“wip”作为提交消息。

我如何创建一个 git 别名来找到正确数量的提交备份包含“wip”的树并压缩它们?实际上可能吗?

I've been using this git-alias which I got from a question on here:

wip = !f() { git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip";}; f

So now I have a series of n commits, sequentially, which all contain 'wip' on its own as the commit message.

How do I make a git alias to go about finding the right number of commits back up the tree which contain "wip" and squashes them? Is it actually possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不是你的备胎 2024-12-24 05:21:28

您可能需要以交互方式rebase 并压缩现有的wip 提交。由于带有挤压的rebase会改变历史,因此很难(尽管并非不可能)实现自动化;最好根据具体情况进行rebase。执行此操作后,您可以将 wip 别名更改为以下内容:

git config --global alias.wip '!f() { git add -A; git ls-files --deleted -z | xargs -0 -r git rm; s=`git show --format=%s HEAD | head -1`; if [ "wip" = "$s" ]; then git commit --amend -m "wip"; else git commit -m "wip"; fi;}; f'

这将避免历史记录中出现连续的 wip 提交。使用 xargs -r 选项,以便如果标准输入完全为空,则不运行该命令。并且如果当前HEAD 提交主题是wip,使用commit--amend

You will probably need to interactively rebase and squash the existing wip commits. Since a rebase with squashes will change history, it makes it difficult (though not impossible) to automate; it's best to rebase on a case-by-case basis. After doing this, you can change your wip alias to the following:

git config --global alias.wip '!f() { git add -A; git ls-files --deleted -z | xargs -0 -r git rm; s=`git show --format=%s HEAD | head -1`; if [ "wip" = "$s" ]; then git commit --amend -m "wip"; else git commit -m "wip"; fi;}; f'

This would avoid contiguous wip commits in your history. The alias is changed from your original alias by using the xargs -r option so that If the standard input is completely empty, do not run the command. and if the current HEAD commit subject is wip, use commit's --amend.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文