【问题标题】:How can I tell Git to ignore certain branches when fetching/pulling? [duplicate]我如何告诉 Git 在获取/拉取时忽略某些分支? [复制]
【发布时间】:2014-05-17 16:03:35
【问题描述】:

目前,当我拉取时,我会从所有分支中获取更改:

$ git pull
remote: ...
Unpacking objects: ...
From ssh://github.com/...
   a69d94d..a2019da  master     -> origin/master
   b684d4a..b8819dc  develop    -> origin/develop
 + 263c644..f1c1894  gh-pages   -> origin/gh-pages  (forced update)
Updating a69d94d..a2019da

我喜欢这种行为,但我不需要从 gh-pages 分支获取内容,因为它只包含生成的内容。如何将 Git 配置为从除某些 (gh-pages) 之外的所有分支中获取。我还想避免在我的本地分支机构列表中看到gh-pages。

【问题讨论】:

  • stackoverflow.com/questions/6368987/… 中的答案有帮助吗?不过,这只是关于获取。
  • 不会像我在回答中提到的那样配置remote.origin.fetch,只包括你想要的分支,而不是gh-branch?
  • @VonC 是的,但是我不必为每个远程分支手动执行此操作吗?
  • 我们的想法是为您想要处理的唯一远程分支执行此操作。它会忽略所有其他的。
  • @VonC 我喜欢我当前git pull 的行为是它会自动添加新的远程分支。

标签: git git-config git-fetch


【解决方案1】:

您可以修改配置以仅获取一个分支:

[remote "origin"]
  fetch = +refs/heads/master:refs/remotes/origin/master

有

git config remote.origin.fetch +refs/heads/master:refs/remotes/origin/master

如果你有多个分支,你可以添加几个 fetch 指令来获取那些(除了gh-pages,你不想获取的那个)

有关多分支提取的示例,请参阅 this question。

我知道这不是一个可以很好扩展的解决方案,但 fetch refspec 不支持正常的排除语法(如^<rev>:请参阅“Specifying ranges”)。

有一种方法可以隐藏某个 r​​efspec,在 git 1.8.2 中引入:commit daebaa7, "upload/receive-pack: allow hiding ref hierarchies",但那是在远程端,而不是客户端。

【讨论】:

  • 问题是关于跳过一个而不是只包括一个。
  • @manojlds 不包括一个跳过另一个?基本上,你需要列出你想要获取的分支。
  • @manojlds 这个答案应该有效,但我会等着看其他人是否有更少手动的解决方案。我经常分支。
  • 您可以创建一个别名来推送并将推送的分支添加到您的获取配置中。
猜你喜欢
  • 2019-06-27
  • 2016-10-19
  • 2017-07-04
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 2014-06-15
相关资源
最近更新 更多