我从GitHub执行了一次提取,以便我可以检查任何更改。这在我的本地机器上创建了一个remotes/origin/master
分支,我可以检查,环顾四周等等。
我做了:
git fetch origin
一切都很好,所以我结帐回我当地的主分支机构,并将origin/master
合并到其中。一切都很顺利。我做了:
git checkout origin/master
# Look around, see everything is pk
git checkout master
git merge origin/master
现在我想知道,我可以(并且应该)删除本地 origin/master
分支吗?我试图通过:
git branch -d origin/master
但它不会让我,错误信息是
错误:找不到分支'origin / master'。
我在合并后删除了本地分支,所以我想知道为什么我现在不能这样做,如果我应该这样做,如果是的话,怎么样?
答案 0 :(得分:3)
master
origin
与origin/master
本地回购关于你是否应该删除你的远程主分支你的意思,你没有说清楚,因为实际上,你可能指的是两个不同但相关的分支:
远程master
上的origin
这是您的远程来源的master
分支。 如果 您要删除它,则可以
git push origin --delete master
# Or
git push origin :master
然而,在典型的Git工作流程中,Git用户希望因各种原因保留该分支,包括(但不限于):
master
分支机构的工作。master
分支。鉴于此,即使您单独工作,通常也没有充分理由在遥控器上删除此分支。
origin/master
这是您本地仓库上的远程跟踪分支,用于跟踪远程master
上origin
分支的状态。要删除远程跟踪分支,您需要使用--remotes
或-r
标记(如git branch
文档中所述):
git branch --remotes --delete origin/master
正如documentation for git branch
所述:
-r --remotes
列出或删除(如果与
-d
一起使用)远程跟踪分支。
但是,在大多数情况下,删除master的远程跟踪分支通常不是一个好主意,因为它可以帮助您跟踪对远程主分支的更改。
作为meager point's out,在您实际使用远程跟踪分支跟踪的分支完成之前,通常不会删除远程跟踪分支。一个典型的情况,如果你有一个远程feature
分支,你从遥控器中删除它:
git push origin --delete feature
然后将本地存储库引用更新为“修剪”过时的远程跟踪分支:
git fetch origin --prune
# Or shorter
git fetch origin -p
但是,在master
分支的情况下,您从未真正“完成”该分支,因为对于大多数Git工作流,它代表了主要的,规范的开发和历史记录。
要了解有关使用远程分支机构的更多信息,请阅读
答案 1 :(得分:1)
您应该能够删除本地副本。考虑到它是其他人也在跟踪的,但是如果你有多个遥控器,即同事,那么删除它可能不是一个好主意,那么节省空间可能是可以的。
尝试:
git branch -dr origin/master
-d
如果合并到上游,则删除。
-r
仅用于远程跟踪分支。
我已经创建了一个新的git存储库,其中包含两个提交和一个本地主设置,以跟踪存在相同提交的远程主服务器。它适用于我,我在git version 1.7.10.4