gpt4 book ai didi

Git - 清理压扁的分支?

转载 作者:太空狗 更新时间:2023-10-29 14:18:30 26 4
gpt4 key购买 nike

我了解如何删除已 merge 到 master ( http://stevenharman.net/git-clean-delete-already-merged-branches ) 中的分支。如何删除已压缩的分支,然后 merge 到主分支中?

例如:

C:\source [master]> git checkout -b feature-a-inprogress
C:\source [feature-a-inprogress]> git ac "WIP"
C:\source [feature-a-inprogress]> git ac "WIP"
C:\source [feature-a-inprogress]> git checkout master
C:\source [master]> git checkout -b feature-a-complete
C:\source [feature-a-complete]> git merge --squash feature-a-inprogress
C:\source [feature-a-complete]> git ac "Completed Feature A"
C:\source [feature-a-complete]> git push origin feature-a-complete

当我运行上述清理时,它会删除 Feature-A-Complete,但不会删除 Feature-A-InProgress。如果您要比较 Feature-A-CompleteFeature-A-InProgress 的当前状态,它们将是相同的(尽管它们的历史记录会不同)。

我知道删除 Feature-A-InProgress 不一定安全,因为中间版本会丢失,但在这种情况下我不在乎,因为最终状态已提交给 master。

谢谢!

编辑:修复示例中不一致的分支名称

最佳答案

当您将源分支 branch_A merge 到目标分支 branch_B 时,使用 --squash git 会将工作树放入与正常 merge 的状态相同,但是,它不会暂存更改,也不会创建新的 merge 提交(具有多个父项)。您必须暂存并提交此更改。这意味着此新提交未引用 merge 源 (branch_A)。因此可以使用 git branch -D branch_A

删除源分支 (branch_A)
git co branch_B
git merge --squash branch_A
git add .
git commit -m "Merge commit (C)"

这将导致:

o-o-o-B (branch_B)         o-o-o-B-C (branch_B)
\ ==> \
o-A (branch_A) o-A (branch_A)

关于Git - 清理压扁的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com