【问题标题】:How do I refresh branches (local/remote) in Visual Studio when using Git?使用 Git 时如何在 Visual Studio 中刷新分支(本地/远程)?
【发布时间】:2016-02-17 18:55:48
【问题描述】:

更新

升级到 Visual Studio 2019 16.8.X 有一个新的 git 工作流。这还包括一个获取按钮。

总结

我正在学习如何在 Visual Studio 中使用 Git。我最近做了一个拉取请求,其中功能分支在合并后被删除。功能分支仍显示在 Visual Studio 的本地和远程分支中。我知道如何右键单击并删除分支,这是一种解决方法,因为团队中的其他人可能会在我不知道的情况下完成我拥有的分支的拉取请求。如果他们之后删除分支,我不会知道他们这样做了。

问题

如何使用 Git 上的内容刷新 Visual Studio 分支?

我的期望

我希望有一个按钮、链接或右键单击功能可以在单击时检查差异,如果发现任何差异,它会询问“此分支不再存在,您想从 Visual Studio 中删除它吗?”。

技术规格

我正在使用 Visual Studio 2015 Enterprise(对于低于 16.8 的版本似乎仍然是 VS 2019 的症状)

附加示例

这可能是另一个问题,但在这里非常适合。我刚刚注意到,如果我创建一个分支(比如在一个 VM 中并与另一个 VM 一起查看相同的存储库),Visual Studio 没有 git fetch 选项来更新分支列表。顶部的刷新按钮似乎没有做任何事情。只要我在 bash 中运行 git fetch,Visual Studio 就会有新的分支。我希望刷新能够解决这个问题。

【问题讨论】:

    标签: git visual-studio visual-studio-2019


    【解决方案1】:

    如果已经在服务器端删除了分支,请在命令行中尝试(因为这样的“按钮”在 Visual Studio 中似乎不直接存在):

    git remote prune origin --dry-run
    

    (去掉--dry-run选项,实际删除本地分支)

    同时删除对应的本地分支git branch -d aBranch

    然后重新启动您的 Visual Studio,并检查它是否选择了更新的分支列表。 (cmets 提到你不必重启/刷新 VS)

    注意:我mentioned before in 2013的配置

    git config remote.origin.prune true
    

    这将使该过程自动化,并且似乎是supported by Visual Studio,就像mentioned below by yaniv


    在 VSCode 上,也尝试激活设置“Git: Prune on Fetch”

    "git.pruneOnFetch": true
    

    【讨论】:

    • 应该不需要重新启动 - VS 应该检测到您对 refs 所做的更改并重新加载它们。
    • 这确实会更新远程分支,并且结果会显示在 Visual Studio 中。为了给你赏金,我想知道VS内部是否有一个按钮可以执行prune git命令。
    • 我可以确认不需要重启。奇怪的是刷新按钮实际上并没有修剪分支本身。
    • @MamunReza 好的。我已经相应地编辑了答案。
    • @markthegrea 是的,在命令行中,在本地仓库中:visualstudio.com/en-us/docs/git/command-prompt
    【解决方案2】:

    发件人:“Refresh git remote branches in Visual Studio

    您可以将 git 配置为在使用此命令运行的 fetch/pull 时自动执行此操作:

    git config remote.origin.prune true –global
    

    更新:

    Visual Studio 2017 版本 15.7.3 及更高版本您可以使用 UI 进行操作:

    1. 在 Team Explorer 中,点击 Home,然后点击 Setting:

    2. 选择全局设置

    3. 将“在获取期间修剪远程分支”更改为“真”

    【讨论】:

    • 有趣。 +1 我在上面的答案中包含了配置以获得更多可见性。
    • 最新的 VS 2019(截至 2021-06-05)位于不同的位置:工具 > 选项 > 源代码管理 > Git 全局设置面板。
    【解决方案3】:

    According to this blog post,你可以通过设置一个git属性

    git config remote.origin.prune true
    

    这将在您执行提取时从您的列表中删除已删除的分支。

    【讨论】:

    • 我喜欢只要我的仓库还在,它就会一直工作!
    • 哇。谢谢!我将与我的同事分享这个。
    • 一次更好的解决方案。
    【解决方案4】:

    对于那些寻找如何在 VS2019 或 VS2022 中配置修剪的用户,它已移至“Git”菜单下。

    【讨论】:

      【解决方案5】:

      VS 2017 似乎支持在 Team Explorer 中配置:

      团队资源管理器主页 设置 Git > 全局设置 在 Fetch 期间修剪远程分支:未设置、True 或 False

      【讨论】:

        【解决方案6】:

        你应该先Unpublish the branch,然后其他人会注意到分支未发布(通过尝试拉分支他们会得到错误),删除本地分支实际上是一个单独的过程本身,必须这样做才能无论如何都要摆脱分支。

        【讨论】:

        • 对于 GitHub 拉取请求,可以从 GitHub 站点中删除分支。没有从该进程取消发布的选项。您确实可以选择在该点删除分支或单击图标删除分支。我也没有在 Visual Studio 中看到取消发布。我正在更新问题以包括我正在使用的 VS 版本,因为我意识到我没有包括那个版本。
        猜你喜欢
        • 2020-02-04
        • 2018-05-01
        • 2018-05-08
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 2012-03-01
        相关资源
        最近更新 更多