【问题标题】:So many unused branches. How to cleanup?这么多未使用的分支。如何清理?
【发布时间】:2013-01-01 05:21:43
【问题描述】:

我有以下分支:

* master
newbranch
remotes/origin/HEAD -> origin/master
remotes/origin/api-notes
remotes/origin/event-creation-validation
remotes/origin/master
remotes/origin/organizerlocation-bug-demo
remotes/origin/ticket-180
  1. 当前分支 master 与 origin/master 不同还是这些分支一起工作?

  2. 如何检测不同分支的最后更改以及如何删除它们以进行清理?

非常感谢。

【问题讨论】:

    标签: git


    【解决方案1】:

    1/ 当前分支 master 与 origin/master 不同还是这些分支一起工作?

    它是不同的(即使它在克隆之后从origin/master 开始),并且不跟踪origin/master(参见“how do I change the remote a git branch is tracking?”)。

    2/ 我怎样才能删除它们进行清理

    您可以使用以下命令从远程命名空间中删除一个分支:

    git branch -rd origin/api-notes
    

    (更多信息请参见“How do you Remove an Invalid Remote Branch Reference from Git?”)

    你可以 git diff 或 git log 两个分支来查看你没有的提交:
    请参阅“Git diff .. ? What's the difference between having .. and no dots?”。
    另见“Git: Compare All Local Commits to Remote Repo Version”。

    【讨论】:

      【解决方案2】:

      您没有任何理由担心或清理任何事情。这就是为什么:

      当前分支 master 与 origin/master 不同还是这些分支一起工作?

      如果您将 master 创建为跟踪分支或克隆它(默认情况下克隆创建跟踪 master),那么是的,有点。跟踪只是意味着 git 将使用这个分支映射作为推送和合并的默认目标。它还会显示状态消息,例如“branch master is ahead of origin/master by 2 commits”。

      如何检测不同分支的最后变化?

      我会简单地使用

      git branch -av
      

      这会显示所有分支(本地和远程)的简短提交 ID 和简短摘要。

      除此之外,您可能还想使用 git log 。 git log --decorate 非常有助于查看哪些分支指向哪些提交。在最新的 git 版本(1.7.11+)中,您可以使用以下命令永久启用它:

      git config --global log.decorate short
      

      如何删除它们以进行清理?

      你没有 - 远程分支不是你的。远程分支仅反映上次执行git fetch 时的远程状态。您无法创建它们,即使您使用git branch -rd 删除它们,当您下次使用git fetch 时,这些远程分支指针也会立即返回。

      但是如果你完全移除这个遥控器:

      git remote rm origin
      

      那么这个远程的所有远程分支将立即消失。

      【讨论】:

      • 很好的解释,比我的回答更详细。 +1
      猜你喜欢
      • 1970-01-01
      • 2012-06-24
      • 2022-11-25
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      相关资源
      最近更新 更多