2013-05-03 9 views
7

में मौजूद है, मैंने बिटबकेट पर एक गिट रेपो का एक कांटा बनाया है (चलो इसे fork_origin पर कॉल करें)। अब अपस्ट्रीम रिपोजिटरी (चलो इसे upstream_origin पर कॉल करें) में कई शाखाएं इसके स्वामी में विलय हो गई हैं और हटा दी गई हैं। तो remote/upstream_origin/ शाखाओं केअपस्ट्रीम गिट रेपो में हटाए गए शाखाओं को तोड़ना, लेकिन अभी भी मेरे फोर्क

git fetch --prune upstream_origin 

नष्ट कर दिया बहुत चल रहा है, लेकिन अब उन्हीं शाखाओं अभी भी remote/fork_origin/ नाम स्थान में मौजूद हैं।

क्या इससे निपटने के लिए मानक गिट कमांड है? मैं जटिल बैश स्क्रिप्ट से दूर रहना चाहता हूं जो रिमोट रिपो पर बड़े पैमाने पर हटा देता है।

अद्यतन:

git remote prune fork_origin 

हालांकि, यह कोई प्रभाव नहीं पड़ा:

के रूप में सुझाव दिया, मैं दूरस्थ छँटाई आदेश का उपयोग करने की कोशिश की। आगे की जांच पड़ताल करने पर, यह है कि केवल 'बासी' शाखाओं के लिए काम करने के लिए लगता है, लेकिन जब मैं चलाएँ:

git remote show fork_origin 

यह पता चलता है कि शाखाओं के सभी अभी भी कर रहे हैं 'पर नज़र रखी। तो यह समझ में आता है कि git remote prune कमांड को हटाने के लिए कुछ भी नहीं था। upstream_origin के सापेक्ष इसकी शाखा स्थितियों को अपडेट करने के लिए रिमोट रेपो (fork_origin) को मजबूर करने का कोई तरीका है?

+0

क्या तुमने कभी यह पता लगा था? मैं एक ही समस्या में चल रहा हूं – BigBrownBear00

उत्तर

1

आप इस आदेश को दूरदराज के उपयोग पर शाखाओं को निकालना चाहते हैं:

git remote prune fork_origin 

लेकिन उससे पहले, इस सूत्र पर एक नज़र डालें और देखें कि क्या गलत हो सकता है: git remote prune – didn't show as many pruned branches as I expected

+0

मैंने इस आदेश के बारे में प्रश्न में एक अद्यतन जोड़ा। साथ ही, ये शाखाएं हैं जिनके पास कोई स्थानीय शाखा नहीं है, इसलिए मुझे नहीं लगता कि अन्य धागे के मुद्दे मेरी स्थिति पर लागू होते हैं। –

0

वहाँ नहीं है एक गिट कमांड, लेकिन आपको इसकी आवश्यकता होगी;

  • लाने fork_origin
  • (अपने git fetch --prune upstream_origin की वजह से) किसी भी remotes/fork_origin/branch जो remotes/upstream_origin में अब मौजूद नहीं है की पहचान
  • git push --delete thoseBranches

इसमें कुछ समय समान करने के लिए "Delete multiple remote branches in git" है।

0

लिनक्स और मैक उपयोगकर्ताओं के लिए यह आदेश अपस्ट्रीम में हटाए गए मेरे काम से सभी शाखाओं को हटा देगा।

git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt; git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt; for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done 

आप एक लंबी आदेश के बजाय चरणों के लिए पसंद करते हैं:

# Find the branches in my fork 
git branch -a | grep origin | awk -F \/ '{print $NF}' > _my_branches.txt; 
# Find the branches still in upstream 
git branch -a | grep upstream | awk -F \/ '{print $NF}' > _upstream_branches.txt; 
# See only the ones that are still in my fork with the comm command 
# And only for those branches issue a git command to prunbe them from my fork. 
for deleted_branch_name in `comm -23 _my_branches.txt _upstream_branches.txt`; do git push origin :$deleted_branch_name; done 
संबंधित मुद्दे