我有我的主分支和一个功能分支,但功能分支包含太多提交(它是从较早的点分支出来的,然后合并和发散等)。
我想要将我的功能分支与主分支进行比较,然后无论发生什么变化,我只是将其隐藏起来。然后我可以创建一个新分支git stash pop,这将为我提供更清晰的分支日志历史记录。
是否有捷径可寻?
我想要实现的是将我的 wip 分支与 prod 分支进行比较,然后无论发生什么变化,我都将其隐藏起来。然后我可以创建一个新分支并 git stash pop 它,这将为我提供更清晰的分支日志历史记录。是否有捷径可寻?
如果我理解的话,你想要的是你的wip分支处于顶部prod并具有更清晰的历史记录。你不需要为此藏匿物品。相反,使用 制作补丁git diff并将其应用到新分支git apply。
# Make a new wip branch from prod
git checkout -b new-wip prod
# Get the diff between prod and wip
git diff prod wip > wip.patch
# Apply the patch
git apply wip.patch
Run Code Online (Sandbox Code Playgroud)
然后删除旧分支并重命名新分支。
git branch -D wip
git branch -m new-wip wip
Run Code Online (Sandbox Code Playgroud)
但一般来说,当你想清理历史记录时,你会使用rebase. 首先,使用rebase重写wip分支,使其所有更改都位于prod.
git checkout wip
git rebase prod
Run Code Online (Sandbox Code Playgroud)
这将消除 中的任何合并或其他历史工件wip。现在就好像您将所有更改都写在wip最新版本之上prod。
然后使用“交互式变基”来根据wip需要修改分支。这可以包括使用fix和squash将多个更改合并为一个。
# Interactively rewrite the changes since prod
git rebase -i prod
Run Code Online (Sandbox Code Playgroud)
这是实现目标的更通用和优雅的方式。它允许您更好地控制您的提交和历史记录。你不必把所有东西混在一起,而是可以有选择。