如何关闭 git 中的分支
how to close a branch in git
当我知道我不会再使用某个分支时,是否可以关闭或锁定它?其实我想关闭一个分支,但我认为用 GIT 关闭一个分支是不可能的。那删除呢。当我删除一个分支时,我的历史会怎样?
更新答案
正如 @user3159253 在此答案的评论中所述:
git garbage-collects commits which aren't referenced, directly or indirectly, by a named reference (branch, tag, etc). That is why it is important to leave a reference to a freezed branch.
您可以通过归档来标记分支的尖端,然后删除该分支。
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>
你可以参考git finding unmerged branches找到那些已经合并或没有合并的分支。
如果一个分支已经合并到其他分支,可以使用以下命令安全地删除它。
git branch -D branch_name
如果你想完全删除一个分支,你可以在你所有的存储库(通常是本地和远程)中删除它。 git 将在下次垃圾收集时清理它。
有关说明,请参阅 How do I delete a Git branch both locally and remotely?。
您可以将它放在活动的 .gitconfig 文件中的别名下,更改格式,因为我在此处的分号后插入换行符以提高可读性。
我在这里使用的技巧是定义一个 shell 函数,Git 可以使用该函数并针对 Git 发出多个命令,用分号分隔。
closebranch = "!w() { echo Attempting to close local and remote branch: Processing...;
echo Checking the branch out..;
git checkout ;
echo Trying to create a new tag archive/;
git tag archive/\"\";
git push origin archive/\"\";
echo Deleting the local branch ;
git branch -d ; echo Deleting the remote branch ;
git push origin --delete ;
echo Done. To restore the closed branch later, enter: git checkout -b MyNewBranch archive/\"\"; }; w"
别名是一组命令,当您 运行 时:
git closebranch SomeBranch
- 查看名为 SomeBranch 的分支 $1
- 新建一个名为archive/$1的标签作为标签,这里叫"archived tag"
- Push to origin the created tag(注意,我这里假设你的遥控器叫做origin,输入
git remote -v 检查是否是这样。
- 删除分支 $1
- 删除远程分支$1
- 向开发人员解释稍后如何将分支从归档标记恢复到新分支。
这将有望帮助开发人员避免分支堆积并避免混乱,因为 Git 缺乏关闭分支的标准方法,例如 Mercurial got。
除了上面的评论外,还应该提到git流。
如果你已经打开了更新的分支,你可以简单地使用以下命令将其删除并合并到 develop 分支中:
分支:“feature-bootstrap5”
$ 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
即使在合并分支之后,仍然存在保留 所有 提交的信息可能很关键的情况...
考虑到您正在开发一个功能分支,并决定在开发过程中添加一些代码来进行复杂的计算。分析后不再需要此代码以继续前进,因此删除了该代码。现在分支已合并(分析不是其中的一部分)。
2 年后,您需要获取该分析代码以证明您在功能开发过程中尽职调查....但它已经消失了,您是 su
ed/fined,没有破产,你的生意就关门了。
当我知道我不会再使用某个分支时,是否可以关闭或锁定它?其实我想关闭一个分支,但我认为用 GIT 关闭一个分支是不可能的。那删除呢。当我删除一个分支时,我的历史会怎样?
更新答案
正如 @user3159253 在此答案的评论中所述:
git garbage-collects commits which aren't referenced, directly or indirectly, by a named reference (branch, tag, etc). That is why it is important to leave a reference to a freezed branch.
您可以通过归档来标记分支的尖端,然后删除该分支。
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>
你可以参考git finding unmerged branches找到那些已经合并或没有合并的分支。
如果一个分支已经合并到其他分支,可以使用以下命令安全地删除它。
git branch -D branch_name
如果你想完全删除一个分支,你可以在你所有的存储库(通常是本地和远程)中删除它。 git 将在下次垃圾收集时清理它。
有关说明,请参阅 How do I delete a Git branch both locally and remotely?。
您可以将它放在活动的 .gitconfig 文件中的别名下,更改格式,因为我在此处的分号后插入换行符以提高可读性。 我在这里使用的技巧是定义一个 shell 函数,Git 可以使用该函数并针对 Git 发出多个命令,用分号分隔。
closebranch = "!w() { echo Attempting to close local and remote branch: Processing...;
echo Checking the branch out..;
git checkout ;
echo Trying to create a new tag archive/;
git tag archive/\"\";
git push origin archive/\"\";
echo Deleting the local branch ;
git branch -d ; echo Deleting the remote branch ;
git push origin --delete ;
echo Done. To restore the closed branch later, enter: git checkout -b MyNewBranch archive/\"\"; }; w"
别名是一组命令,当您 运行 时: git closebranch SomeBranch
- 查看名为 SomeBranch 的分支 $1
- 新建一个名为archive/$1的标签作为标签,这里叫"archived tag"
- Push to origin the created tag(注意,我这里假设你的遥控器叫做origin,输入 git remote -v 检查是否是这样。
- 删除分支 $1
- 删除远程分支$1
- 向开发人员解释稍后如何将分支从归档标记恢复到新分支。
这将有望帮助开发人员避免分支堆积并避免混乱,因为 Git 缺乏关闭分支的标准方法,例如 Mercurial got。
除了上面的评论外,还应该提到git流。 如果你已经打开了更新的分支,你可以简单地使用以下命令将其删除并合并到 develop 分支中:
分支:“feature-bootstrap5”
$ 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
即使在合并分支之后,仍然存在保留 所有 提交的信息可能很关键的情况...
考虑到您正在开发一个功能分支,并决定在开发过程中添加一些代码来进行复杂的计算。分析后不再需要此代码以继续前进,因此删除了该代码。现在分支已合并(分析不是其中的一部分)。
2 年后,您需要获取该分析代码以证明您在功能开发过程中尽职调查....但它已经消失了,您是 su ed/fined,没有破产,你的生意就关门了。