59

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

4

6 回答 6

69

更新的答案

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

git 垃圾收集未被命名引用(分支、标签等)直接或间接引用的提交。这就是为什么留下对冻结分支的引用很重要的原因。


您可以通过归档来标记分支的尖端,然后删除该分支。

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>
于 2016-03-02T05:02:24.147 回答
8

你可以参考git 查找未合并的分支来查找那些已合并或未合并的分支。

如果一个分支已经合并到另一个分支中,使用以下命令删除它是安全的。

git branch -D branch_name

于 2016-03-02T07:49:12.787 回答
1

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

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

2 年后,您需要获取该分析代码以证明您在开发该功能期间进行了尽职调查......但它已经消失了,您被起诉/罚款,而不是破产您的业务关闭。

于 2021-06-10T15:38:44.407 回答
0

如果您想完全删除一个分支,您可以在所有存储库(通常是本地和远程)中删除它。git 会在下次垃圾收集时清理它。

请参阅如何在本地和远程删除 Git 分支?获取说明。

于 2016-03-02T08:35:51.480 回答
0

您可以将其放在活动 .gitconfig 文件中的别名下,更改格式,因为我在分号后插入换行符以便在此处阅读。我在这里使用的技巧是定义一个 shell 函数,Git 可以使用该函数并对 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. Push to origin 创建的标签(请注意,我在这里假设您的遥控器称为 origin,键入 git remote -v 以检查是否是这样。
  4. 删除分支 $1
  5. 删除远程分支 $1
  6. 向开发人员解释如何稍后将分支从归档标记恢复到新分支中。

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

于 2020-06-14T21:22:17.710 回答
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

于 2021-05-03T14:27:53.147 回答