2016-08-07 87 views
2

這可能違背了git的設計理念,但是:在我的組織中,我經常拉下數以千計的開發人員分支,名爲例如: Dev/<login>/<something...>有沒有辦法讓git忽略整個分支?

我寧願有git,默認情況下,不拉下這些分支。然後,如果事實證明我確實需要在特定分支中進行協作,那麼我只是明確地將其拉下來。

這可能嗎? (我很少研究表明無)

感謝

+1

'.gitignore'將會是錯誤的地方。您需要調整'.git/config'中的'fetch'規範以獲取適當的遙控器。嘗試在那裏玩一些通配符。對不起,我沒有足夠的知識來幫助你進一步,但很想看到一個工作的解決方案。 :-) –

+0

可能重複[可以永久忽略遠程分支?](http://stackoverflow.com/questions/16842426/can-git-permanently-ignore-a-remote-branch) –

回答

3

git-pull使用git-fetch

查看https://git-scm.com/docs/git-fetch的文檔,特別是「配置遠程跟蹤分支」部分(下面逐字附加)。

看着這一點,您只能將模式列入白名單,而不能排除某些模式。什麼,你可以因此要做的就是一個:

  • 手動列出要從而不是通配符拉樹枝
  • 讓每個人都使用前綴爲所有分支機構,這樣就可以Dev/*Foo/*區分

混帳取允許您將遠程配置。 <存儲庫> .fetch配置變量。

典型地,這樣一個可變可能看起來像這樣:

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

該配置在兩種方式使用:

當GIT中取指令而不指定什麼分支和/或代碼,以便在所述命令獲取運行線,例如git獲取原點或git獲取,遠程。 <資源庫> .fetch值用作refspecs-它們指定要獲取哪個ref以及哪些本地ref需要更新。上面的例子將獲取原點中存在的所有分支(即任何與值左側相匹配的ref,refs/heads/),並更新refs/remotes/origin/中相應的遠程跟蹤分支層次結構。

+1

哦,謝謝你, @torek! –

3

你總是可以簡單地獲取你正在工作的當前分支,並且只能獲取這個分支。

我寧願讓Git,默認情況下,當你需要合併你的分支,你可以隨時使用這個語法來拉拽不下來這些分支

# pull only the current branch you are working on 
# git pull = git fetch && git merge 
git pull origin <branch name> 

現在/合併它:

# grab the remote branch 
git pull origin Dev/<branch name> 

另一種方式是 「玩」 與您refspec但我不是recommendin即便是因爲它很簡單。

這是一個樣表的文檔:

......但是,你可以使用命名空間(或目錄)來完成類似的東西。

如果你有一個QA組,他們推送一系列分支,
,你想要得到的主分支和QA組的所有分支,但沒有別的,你可以使用這樣的配置部分:

[remote "origin"] 
    url = https://github.com/schacon/simplegit-progit 
    fetch = +refs/heads/master:refs/remotes/origin/master 
    fetch = +refs/heads/qa/*:refs/remotes/origin/qa/* 
相關問題