比较来自世界各地的卖家的域名和 IT 服务价格

何时删除分支机构 Git?

假设我们有一个稳定的应用程序。

明天有人会举报我们现在将解决的重要错误。 因此,我们为此校正创建了一个分支 "master", 我们称之为 "2011_Hotfix" 我们推广它,以便所有开发人员都可以在其纠正中进行合作。

我们纠正了错误和团结 "2011_Hotfix" 在 "master", 以及目前的发展分支。 然后点击 "master."

我们现在所做的 "2011_Hotfix"? 他应该永远坐在那里,直到终点,或者我们现在应该删除它,因为他实现了他的目标? 只需留下各地的分支才能留下不洁的,因为分支机序可能会变得很长时间,其中大部分都不再需要。

如果它将被删除,他的故事会发生什么? 它是否会被保留,即使实际的分支不再可用? 此外,我如何删除远程分支?
已邀请:

窦买办

赞同来自:

您可以安全地删除分支
git branch -d yourbranch

. 如果它包含非形状的变化 /也就是说,你丢失了提交,删除了分支/, git 告诉你它,不会删除它。

因此,统一分支的拆除是便宜的,不会导致历史丧失。

删除远程分支,使用
git push origin :mybranch

, 假设您的远程名称原点以及要删除的远程分支被调用 mybranch.

诸葛浮云

赞同来自:

您需要做的是标记您发布的一切。 在积极开发时,请保持分支机构。

使用删除旧分支机构


git branch -d branch_name


从服务器中删除它们


git push origin --delete branch_name


或旧语法


git push origin :branch_name


读为 "push nothing into branch_name at origin".

但是,虽然 DAG /定向无循环图形/ 可能表明,该提交将存在于历史中。

Google "git-flow", 它可以了解释放,分支和标签的管理。

二哥

赞同来自:

由于问题有标签 "github" , 我还会添加以下内容:特别是
https://github.com/
, 如果您要求分支机构

pull-request

她将结合在一起 /无论是通过 UI, 无论是融合分支 pull-request/, 您不会丢失请求数据 pull /包括评论/,

即使你删除了分支。

.

其中的推论:如果您打开挤出请求对您的工作流程 /这与代码评论完美结合/, 您可以在组合后立即安全地删除分支机构。 它最近是很常见的 Github 添加 /甜的/ 弹出按钮的功能 "delete branch" 在恢复请求的合并后立即。

但值得注意的是,每个小组都应该采取一个适合她最好的工作流程。 /它可以导致或不会导致去除这些分支/. 例如,我目前的工作团队削减了与之无关的所有分支机构 master 或者 deployment /例如,制造,分期等/, 一旦挤出请求组合,我们仍然可以完全跟踪相关的提交如何形成每个产品的增量改进。

当然,没有管理历史 /pull requests 或其他/ 不替换版本的正确标记 /您最好使用相同的工具自动化/删除脚本/包装版本/, 因此,您可以随时快速切换到您当前使用的用户。 陷入困难也是解决您初始问题的关键:如果安装任何分支与分支机构组合 "work", 可能必须删除,并且任何分支都会与标签版本组合 "production" 如果没有,如果没有,您将始终固定在整合到未来版本中。

冰洋

赞同来自:

我会补充一点,分支的缺点是您将毁掉这些分支的任何超链接 GitHub /这个问题标明了 github/. 你会弄错
404 Not Found

对于这些链接。 这就是为什么我更改链接,以便在删除分支后,它们指向换向或标记 GitHub.

例如,由于某些引用更改,例如在 email, 我现在完全避免了分支上的超链接 GitHub 并从第一天引用换货或标签。

我更愿意在合并后删除分支机构。 这可以防止存储库中的长期分支列表的视觉障碍。 这些分支也适用于所有插头存储库。

首先,我删除了我的本地分支机构。 这可以防止他的意外按下。


git branch -d branchName


然后我删除遥控跟踪分支


git branch -dr remoteName\branchName


然后我删除分支 GitHub. 我使用Web界面,但等效团队在下面。


git push remoteName :branchName


即使分支永不合并,我仍然希望履行后代。 但是,我仍然喜欢删除分支。 要传播犯下并不给予它们被吃掉垃圾收集器,我做了一个指向与远程分支相同的提交的注释标记。


git tag -a tagName commitOrBranchName


然后我点击标签 github


git push remoteName tagName

莫问

赞同来自:

似乎你想删除分支
2011_Hotfix

, 没有失去她的故事。 我将主要讨论删除以及第二个故事。

常规分支去除方法
git

已经上面已经描述过,他们按预期工作。 W.
git

一个或两个单词没有命令,这意味着: "嘿,
git

, 删除本地和远程分支。" 但是可以使用脚本迁移此行为。 shell. 例如,采取
https://github.com/holman/dotf ... -nuke
. 这很简单:


#!/bin/sh
git branch -D $1
git push origin :$1


将它放在可执行文件中 /例如,
git-nuke

/ 在其中一个目录中
$PATH

. 如果你不在分支中
2011_Hotfix

, 那就是跑步
git-nuke 2011_Hotfix

, 您将删除本地和远程分支。 它更快 & 更容易 - 但可能比标准团队更危险
git

.

你对保持故事的关注是好的。 在这种情况下,您无需担心。 一旦你结合起来
2011_Hotfix


master

, 所有的承诺
2011_Hotfix

将添加到提交历史中
master

. 简而言之,你不会从简单的融合中丢失故事。

我想添加另一个词,或许,超越了你的问题,但尽管如此,这与目的相关。 让我们想象有 20 小犯罪" work-in-progress " 在
2011_Hotfix

; 但是,您只需要一个完整的提交
2011_Hotfix

被添加到故事中
master

. 如何结合一切 20 一个大犯罪的小犯罪? 幸运的是,
git

允许您在一个提交中组合几个提交
git-rebase

. 我不会在这里解释它是如何工作的; 虽然如果你有兴趣,
https://git-scm.com/docs/git-rebase
出色的。 注意
git rebase

对应于故事,所以应该合理使用,特别是如果你是新的。 最后,你的脚本
2011_Hotfix

它涉及开发人员团队,而不是单一的开发人员。 如果项目团队的成员使用
git rebase

, 然后为团队合理有明确的使用建议
git rebase

, 对于一些牛仔开发商,在团队中不知不觉地损坏了项目历史
git

.

冰洋

赞同来自:

如果他成功结合回来,也许甚至标记,我会说他不再有意义。 所以你可以安全地做到
git branch -d branchname

.

董宝中

赞同来自:

如果要裁剪从源中删除的本地分支机构,您也可以使用它们来使用
git fetch



git fetch --prune

冰洋

赞同来自:

您可以在所有主要网站UISS中删除分支,例如 github, BitBucket. 在Internet上删除分支后,您可以使用删除本地分支


git remote prune origin

要回复问题请先登录注册