如何关闭Git分支?


112

所以我开始使用Git + GitHub。

在我们这个分散的小组中,每个成员都为分配的每个问题/需求创建自己的分支。

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

现在code codecommitcodecommit,等...

然后pull requestcode-fixupcommitcodecommit..等

并最终接受请求。

但是..现在呢?(......尴尬......)

在本地开发机器上创建分支的人员是否需要关闭分支?建议开发人员删除分支`(... ...- D ...),然后拉/刷新master ..然后将获取所有分支代码。

嗯...不确定-请帮助:)


16
Git中的分支只是特定提交上的标签-因此,基本上,如果不再需要它,则只需删除该“分支”(该提交上的“标签”)即可。在本地,只需做一个git branch Issue#1 -d,就是所有-没有代码丢失,仅从存储库中删除了一个标签
-marc_s

1
@marc_s我建议只回答一个问题:)
KingCrunch 2011年

所以@marc_s-您说的是,一旦您确定分支机构..并且分支机构已被推送..我们将其删除,这是标准做法?合并呢?
Pure.Krome

@ Pure.Krome至少我认为,“接受拉请求”是指它已经被合并。是的,当然,将更改集成到masterdevelop或开发分支的任何名称中(合并,重新设置(具有/不具有壁球),...)
KingCrunch 2011年

当我说“请求被接受” ..那发生在其他地方。(即负责批准所有PR代码的开发人员...)。我想知道我是否应该切换到我的本地开发机器上的master并进行合并。
Pure.Krome

Answers:


181

我们要求开发人员在请求拉取状态时要求删除分支。在大多数情况下都是这样。有时需要一个分支(例如,将更改复制到另一个发行分支)。

我的手指记住了我们的过程:

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

分支是工作。标签标记时间。通过标记每个分支合并,我们可以在需要时重新分支。分支标记已被使用多次以查看更改。


8
我们最近对程序进行了更改。使用git push --tags费力,下载所有标签。这使您很难拥有自己的本地标签。相反,我们git push origin branch-<feature-branch>仅使用一个标签。
Bill Door

因此,在最后一行,您需要记住为功能分支使用标签名称,我们之前将其设置为“ branch- <feature-branch>”,而不仅仅是<feature-branch>。正确?
总理布罗曼诺夫

@PremierBromanov最后一行是用于删除远程分支。请记住,标签@BillDoor已使用git push --tags
Deivide

优秀的脚本!
Kike Gamboa

41

是的,只需运行运行即可删除分支git push origin :branchname。要稍后解决新问题,请再次从master分支。


3
这将删除远程分支,而不是本地分支。
KingCrunch 2011年

5
我不知道为什么将其改为-2,这是正确的答案。他们肯定有一个远程分支,他们还可以针对它发布PR吗?
安娜·贝茨

如果您执行此操作,然后执行git pull,它也不会删除本地分支吗?(编辑:nm,除非您运行git remote prune,否则我明确表示不会这样做。)
Tim Keating 2014年

1
分支历史发生了什么?
geoidesic '16

40

完成代码后,首先将分支合并到主节点,然后删除该分支

git checkout master
git merge <branch-name>
git branch -d <branch-name>

这是在我自己的开发机上,对吗?接受任何新代码的主要人员..他的机器在别处。
Pure.Krome

2
如果有人在进行合并,他通常会将您的分支指针放在单独的远程中,例如,发件人/分支名称。完成操作后,他将需要使用它git remote prune sender来摆脱它-尽管在大多数情况下,他不需要关心。
约根森

1
,除非你是一个负责主树整合它不应该合并自己的分支。如果不是,并且您要求其他人对其进行集成,请使用新的远程提交更新您的master分支-它们应包含您请求提取的内容-然后删除您的分支。这样可以确保如果其他人更改了内容,您不会有任何问题。
ThiefMaster 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.