如何在本地获取git branch -a进行更新?

时间:2014-11-07 19:57:02

标签: git

我有一个看似过时的git索引。我在两台机器上开发。在一台计算机上,我使用git push origin :testbranchgit branch -D testbranch删除了几乎所有远程分支。这很有效,当我发出git branch -a时,我得到了这个:

* master
remotes/origin/HEAD -> origin/master

然后我来到我的另一台机器并执行git pull,它没有更新索引并打印出我在另一台机器上删除的所有旧分支:git branch -a

* master
remotes/origin/add_area_to_locations
remotes/origin/captcha_test
remotes/origin/full_responsive
remotes/origin/master
remotes/origin/pony_responsive
remotes/origin/shu_responsive
remotes/origin/usmle_cart
remotes/origin/yorgo_responsive

然后我谷歌周围,并且无法找到每个说法的索引更新功能。我尝试了git update-index --really-refreshgit update-index --refresh,但似乎没有做任何事情。只是为了仔细检查遥控器上的什么,我重新克隆了回购,确定回购没有分支,并且我想要它是干净的。

但问题仍然存在 - 如何更新我的本地索引,以便准确反映主源回购中的内容?我不想克隆一个回购只是为了清理索引。

非常感谢!

2 个答案:

答案 0 :(得分:2)

你需要这样做:

git fetch -p
  

-p, - prune

     

获取后,删除遥控器上不再存在的所有远程跟踪引用。标签不受修剪,如果他们   仅由于默认标记自动跟踪或由于a而被提取   --tags选项。但是,如果由于显式refspec(在命令行或远程配置中,为...)提取标记   例如,如果使用--mirror选项克隆远程,则为它们   也需要修剪。

这意味着在获取之后,它将删除遥控器上不再存在的任何远程跟踪分支。

答案 1 :(得分:0)

git pull通常只提取您要拉出的分支,因此您必须单独拉出每个分支。如果您只想更新远程分支,则应使用git fetch。使用--prune选项(或简称为-p),您可以使git fetch除去从远程执行的所有远程分支:

git fetch -p

这样做会消除你从遥控器上移除的所有分支。

最后,关于你对“索引”的使用:在Git中,索引也称为“临时区域”。它是添加更改的中间位置(使用git addgit rm等命令),然后包含在下一次提交中。您将对索引的更改添加到为下一次提交暂存它们(因此名称为“暂存区域”)。其中包含“index”的所有命令都可能引用此命令,而不是某些lookup index