如何清理分支列表?

时间:2017-03-10 16:41:52

标签: git git-branch

从遥控器克隆回购后,我在master分支上。输入git branch查看分支列表时,列表中只有master

随着时间的推移,检查现有分支以及创建新分支,最终将新工作合并到master并推送到origin。现在,输入git branch会显示一个包含数十个分支的长列表。

如何减少列表,从列表中删除特定分支,同时保留列表中的其他分支?

更新1 :为了澄清,我不想删除回购中的任何分支(并且肯定不是来自远程仓库)。只是让我更容易在给定时间经常使用的分支子集之间导航。

更新2 :考虑 -

$ git clone myrepo
$ git branch
        * master
$ git checkout mybranch
$ git branch
          master
        * mybranch
$ git checkout master
$ git branch
        * master
          mybranch
$ git "I'll not be dealing with mybranch for 91 days, do something to clean the list"
$ git branch
        * master

(playing DOOM for 91 days)

$ git checkout mybranch
$ git branch
          master
        * mybranch

3 个答案:

答案 0 :(得分:3)

  

我不想删除分支。我希望它们仍然存在于回购中。我只想清理清单

您仍然需要删除这些本地分支。这不会在远程仓库中删除它们。

一个好的政策是删除any branch merged to master

git branch -d $(git branch --merged | grep -vw $(git rev-parse --abbrev-ref HEAD))

不要忘记你可以通过restore any deleted branch git reflog(如果在过去90天内完成)。

答案 1 :(得分:1)

首先,列出所有本地分支:

struct node{
    int value;
    node* ptr_to_next_node;
};

我们需要知道哪些分支已经在“master”中合并,并且可以轻松删除:

$ git branch

现在,删除所有过时的分支:

$ git checkout master
$ git branch --merged

接下来,决定如何处理未合并的分支:

$ git branch -d old-merged-feature

如果其中一些只是您不再需要的东西,请使用“-D”选项将其删除:

$ git branch --no-merged

答案 2 :(得分:1)

git branch命令使用位置.git/refs/heads中的文件列出分支,在这里您可以找到具有分支名称的文件。此位置中的每个文件都对应一个分支,删除您不希望在git branch命令的输出中看到分支的文件。

$ git branch
* branch-1
  master
  trunk
$ ls .git/refs/heads/
branch-1  master  trunk
$ rm .git/refs/heads/master
$ git branch
* branch-1
  trunk
$