为啥“合并后删除分支”只删除远程GIT分支而不是本地?

Posted

技术标签:

【中文标题】为啥“合并后删除分支”只删除远程GIT分支而不是本地?【英文标题】:Why does "delete branch after merge" delete only the remote GIT branch and not the local?为什么“合并后删除分支”只删除远程GIT分支而不是本地? 【发布时间】:2020-11-13 03:14:23 【问题描述】:

正如标题所暗示的,当我从存储库网页批准合并请求并检查“合并后删除分支”时,仅删除了远程分支。我不明白为什么本地分支保留在我的计算机上。如果我继续修改该本地分支会发生什么,我仍然可以推送并合并它吗?

【问题讨论】:

【参考方案1】:

本地存储库和远程存储库不会保持持续联系,而是仅在运行与远程存储库交互的 git 命令时更新彼此的状态。 (一般包括origin的所有命令。)

我最喜欢的清理合并本地分支的方法如下:

git branch -d merged-branch

如果 merged-branch 的内容在另一个本地分支中,这只会删除它,因此它可以防止删除任何未保存的本地工作。

git remote prune origin

这会检查源上不再存在哪些分支并删除那些远程指针。 (它也可以在末尾使用--dry-run 运行,以显示在不实际执行的情况下将删除的内容。)这与 Kevin 列出的命令相同,只是它不获取新的引用。

【讨论】:

【参考方案2】:

Git 是一个去中心化的版本控制系统。 如果要在本地应用源更改,则需要将本地与源同步。

要同步分支,您可以使用git fetch -p

如果你不想删除本地分支,你可以继续使用它,一旦你再次推送它就会出现在原点。

【讨论】:

【参考方案3】:

删除分支的远程版本是自动完成的,因为询问您是否要这样做的实体可能是远程存储库。将大量已合并的分支留在远程可能会占用大量空间,并最终会影响性能。至于你是否也想删除你的本地分支,这是你自己的决定。

是的,您可以继续使用该本地分支并再次推送。它会再次出现在远程,理论上你甚至可以从这个曾经被删除的分支向某个目标分支发起一个新的拉取请求。但是,大多数 Git 用户会认为,一旦功能分支被合并,它的生命周期就完成了,并且该分支大部分应该在合并后退休并且不再使用。

【讨论】:

以上是关于为啥“合并后删除分支”只删除远程GIT分支而不是本地?的主要内容,如果未能解决你的问题,请参考以下文章

我再仓库建立了分支,为啥本地git上面通过git branch -a ,显示不出来远程的分支呢

git实用的操作命令

删除本地git的远程分支和远程删除git服务器的分支

Git查看删除重命名远程分支和tag转

Git 远程删除分支后,本地 git branch -a 依然能看到的解决办法

错误记录Git 使用报错 ( git branch -a 仍能查询到已经删除的远程分支 )