如何在git中关闭分支

时间:2016-03-02 04:53:12

标签: git git-branch git-tag git-archive

当我知道我不再使用分支时,是否可以关闭或锁定它?实际上我想关闭一个分支机构,但我不认为有可能通过GIT关闭分支机构。删除怎么样?删除分支时,我的历史会发生什么?

6 个答案:

答案 0 :(得分:34)

更新了答案

正如@user3159253在此回答的评论中所述:

  

git garbage-收集未通过命名引用(分支,标记等)直接或间接引用的提交。这就是为什么留下对冻结分支的引用很重要的原因。

您可以通过归档来标记分支的提示,然后删除分支。

git tag archive/<branchname> <branchname>
git branch -d <branchname>
git checkout master

分支将被删除,稍后可以通过签出标记并重新创建分支来检索。

git checkout archive/<branchname>
git checkout -b new_branch_name

或更简单:

git checkout -b new_branch_name archive/<branchname>

答案 1 :(得分:3)

您可以参考git finding unmerged branches查找已合并的分支。

如果某个分支已合并到其他分支中,则可以使用以下命令将其删除。

git branch -D branch_name

答案 2 :(得分:0)

如果要完全删除分支,可以在所有存储库(通常是本地和远程)中删除它。然后,git会在垃圾收集时将其清理干净。

有关说明,请参阅How do I delete a Git branch both locally and remotely?

答案 3 :(得分:0)

您可以将其放在活动.gitconfig文件中的别名下,更改格式,因为我在分号后插入了换行符,以便于阅读。 我在这里使用的技巧是定义一个Git可以使用的shell函数,并针对由半冒号分隔的Git发出多个命令。

   closebranch = "!w() { echo Attempting to close local and remote branch: $1 Processing...; 
echo Checking the branch $1 out..;
 git checkout $1;
 echo Trying to create a new tag archive/$1;
 git tag archive/\"$1\";
 git push origin archive/\"$1\"; 
echo Deleting the local branch $1; 
git branch -d $1;  echo Deleting the remote branch $1;
 git push origin --delete $1;
 echo Done. To restore the closed branch later, enter: git checkout -b MyNewBranch archive/\"$1\"; }; w"

别名是在您运行时将要使用的一组命令: git closebranch SomeBranch

  1. 检出名为SomeBranch的分支$ 1
  2. 创建一个名为archive / $ 1的新标签作为标签,这里称为“存档标签”
  3. 将原始标签推入原始位置(请注意,我在这里假设您的遥控器称为原始,键入 git remote -v检查是否是这种情况。
  4. 删除分支$ 1
  5. 删除远程分支$ 1
  6. 向开发人员介绍如何稍后将其从存档标记还原到新分支中。

这有望帮助开发人员避免分支堆积和避免混乱,因为Git缺乏关闭Mercurial这样的分支的标准方法。

答案 4 :(得分:0)

除了上面的评论,git flow 也应该提到。 如果您已经为更新打开了一个分支,您可以简单地使用以下命令将其删除并将其合并到开发分支中:

分支:“功能引导5”

$ git flow feature finish feature-bootstrap5

更多信息: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow https://danielkummer.github.io/git-flow-cheatsheet/index.html

答案 5 :(得分:0)

即使在合并分支之后,仍然存在保留所有提交信息可能很关键的情况...

考虑到您正在处理一个功能分支,并决定添加一些代码来进行复杂的计算作为开发的一部分。分析后,此代码不再需要继续前进,因此删除了该代码。现在分支被合并了(分析不是它的一部分)。

2 年后,您需要获取该分析代码以证明您在该功能的开发过程中进行了尽职调查.... 但它已经消失了,您是 su ed/罚款,而不是让您的企业倒闭。