首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止跟踪Git中的一个远程分支?

如何停止跟踪Git中的一个远程分支?
EN

Stack Overflow用户
提问于 2010-06-15 15:06:32
回答 11查看 319.7K关注 0票数 724

如何停止跟踪Git中的远程分支

我要求停止跟踪,因为在我的具体情况下,我想删除本地分支,而不是远程分支。删除本地分支并将删除推到远程也将删除远程分支:

我可以只做git branch -d the_branch,当我稍后git push时它就不会被传播了?

如果我稍后要运行git push origin :the_branch,它会传播吗?

EN

Stack Overflow用户

发布于 2021-09-25 15:25:47

局部跟踪分支

如果您讨论的是配置为main -to和pull-from (上游远程分支)的本地分支(例如,pushdev),则可以使用以下方法禁用该分支:

代码语言:javascript
复制
❯ git branch --unset-upstream <LOCALBRANCH>

例如:

代码语言:javascript
复制
❯ git branch --unset-upstream dev
❯ git branch --unset-upstream feature-x

远程跟踪分支

如果您指的是名称<REMOTE>/<BRANCH>的分支(例如,origin/mainorigin/dev),这些分支显示在git log (和.git/refs/remotes/<REMOTE>/目录)中,显示远程分支的状态,那么您可以通过用自己的新的自定义列表覆盖当前持有的远程跟踪分支的列表,停止对其进行“跟踪”(使其更新):

代码语言:javascript
复制
❯ git remote set-branches <REMOTE> [<REMOTE-BRANCH> …]

此外,如果您不希望在git log (和.git/refs/remotes/<REMOTE>/目录)中看到那些远程跟踪分支,那么您可以使用以下方法删除它们:

代码语言:javascript
复制
❯ git branch --delete --remotes -- <REMOTE>/<BRANCH>
Deleted remote-tracking branch <REMOTE>/<BRANCH> (was 1f1a655).

例如:

代码语言:javascript
复制
# keep tracking `origin/main`, and `origin/dev`,
# untrack all other `origin/*` remote branches
❯ git remote set-branches origin main dev

# delete remote branches previously tracked, from the
# `.git/refs/remotes/<REMOTE>/` directory
❯ git branch --delete --remotes -- origin/feature-x origin/feature-y
❯ git branch --delete --remotes -- origin/hotfix-z

枯萎的远距离树枝

最后,如果已经从远程存储库本身删除了远程分支(已变得陈旧),并且希望更新本地存储库以反映这一点,则可以删除(修剪)它们:

代码语言:javascript
复制
# automatically
❯ git remote prune <REMOTE>
Pruning <REMOTE>
URL: <REMOTEURL>
 * [pruned] <REMOTE>/<BRANCH>

...or

代码语言:javascript
复制
# manually
❯ git branch --delete --remotes -- <REMOTE>/<BRANCH>
Deleted remote-tracking branch <REMOTE>/<BRANCH> (was 1f1a655).

PS

您可以使用以下方法检查跟踪状态:

代码语言:javascript
复制
❯ git remote show <REMOTE>

例如:

代码语言:javascript
复制
❯ git remote show origin
* remote origin
  Fetch URL: /Users/johndoe/bare-remote
  Push  URL: /Users/johndoe/bare-remote
  HEAD branch: ant
  Remote branches:
    brooms  tracked
    bull    tracked
    cat     tracked
    deer    tracked
    dog     tracked
    foxy    tracked
    john    tracked
    master  tracked
    new     tracked
    tim     tracked
    timothy tracked
  Local branches configured for 'git pull':
    ant    merges with remote ant
    master merges with remote master
  Local refs configured for 'git push':
    ant    pushes to ant    (up to date)
    master pushes to master (up to date)

  • git-遥控器(1): set-branches:更改指定的远程跟踪的分支列表。这可以用于跟踪远程初始设置之后可用的远程分支的子集。 prune:删除与之相关的陈旧引用。默认情况下,删除下陈旧的远程跟踪分支,但根据全局配置和远程的配置,我们甚至可能会修剪没有被推送到那里的本地标记。 show:给出了一些关于遥控器的信息。
  • git-分支机构(1): --unset-upstream:删除上游信息。 --delete:删除一个分支。 --remotes:列出或删除(如果与-d一起使用)远程跟踪分支.
票数 13
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3046436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档