क्या इस शाखा को निर्दिष्ट किए बिना इसे सेट करने के लिए एक कॉन्फ़िगर तरीका है?
क्या इस शाखा को निर्दिष्ट किए बिना इसे सेट करने के लिए एक कॉन्फ़िगर तरीका है?
जवाबों:
Git पहले से ही केवल वर्तमान शाखा को खींचता है। यदि आपके पास एक ट्रैकिंग शाखा के रूप में स्थापित की गई शाखा है, तो आपको दूरस्थ शाखा को निर्दिष्ट करने की आवश्यकता नहीं है। git branch --set-upstream localbranch reponame/remotebranch
ट्रैकिंग संबंध स्थापित करेगा। आप तब जारी करते हैं git pull [--rebase]
और केवल उस शाखा को अपडेट किया जाएगा।
बेशक, सभी रिमोट ट्रैकिंग शाखाएं और रिमोट के लिए सभी रेफरी को अपडेट किया जाएगा, लेकिन केवल आपकी स्थानीय ट्रैकिंग शाखा को संशोधित किया जाएगा।
इस सामान्य ऑपरेशन के टाइप करने के लिए उपयोगी बैश उर्फ:
# Add an alias to pulling latest git changes into your same branch
alias pullhead='git pull origin $(git rev-parse --abbrev-ref HEAD)'
Powershell फ़ंक्शन जो ऐसा करता है:
Function pullhead {
$cur_head="$(git rev-parse --abbrev-ref HEAD)"
& git pull origin ${cur_head}
}
मैंने इसे इस तरह किया:
git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"
या
git pull origin $(git rev-parse --abbrev-ref HEAD)
यह वर्तमान शाखा से अर्क निकालता है git branch
, और उस शाखा को दूरस्थ मूल से खींचता है।
ध्यान दें, जैसे कि सेठ रॉबर्टसन ने कहा, जब कोई तर्क नहीं दिया जाता है तो केवल वर्तमान शाखा को संशोधित किया जाता है लेकिन सभी दूरस्थ शाखाओं को लाया जाता है। मैं सभी दूरस्थ शाखाओं को प्राप्त नहीं करना चाहता, इसलिए मैंने इसे इस तरह से किया।
git branch
वास्तव में शाखा जानकारी के लिए पार्स नहीं किया जाना चाहिए। यह जानकारी git rev-parse
कमांड बनाने के साथ उपलब्ध है :git pull origin $(git rev-parse --abbrev-ref HEAD)
git pull origin <current-branch>
वैसे भी डिफ़ॉल्ट है, है ना? क्या आप यह अनुमान लगा रहे हैं कि अन्य दूरस्थ शाखाएँ (जैसे मूल / अन्य-शाखा आदि) अपडेट नहीं हैं, ताकि ट्रैफ़िक कम हो जाए?
git pull
तो आप एक संदेश की तरह समाप्त हो सकते हैं There is no tracking information for the current branch. Please specify which branch you want to merge with.
। फिर आप हमेशा टाइपिंग समाप्त करें git pull origin my-feature-branch
। मैं वास्तव में जानना चाहता हूं कि यह स्थिति कैसे आती है कि कोई ट्रैकिंग जानकारी नहीं है।
अपडेट करें
मेरे द्वारा जोड़ा गया पुराना उत्तर किसी भी अधिक काम नहीं करता है: /। लेकिन मेरे द्वारा लगाए गए PUSH संस्करण के बारे में कुछ संकेत मिलने के बाद, मेरा मतलब है कि यह उत्तर वास्तव में किसी को मदद कर रहा है जो खोज इंजन से यहां आ रहा है, इसलिए मैं इस उत्तर को रखूंगा।
Git के नए संस्करण के लिए इसे आज़माएँ:
$ git config --global push.default current
pull.default=current
। मैं देख रहा हूँ कि मेरी git clone
डिफ़ॉल्ट रूप से जोड़ी गई, remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
लेकिन यह बहुत मानक है।
pull.default
कॉन्फ़िगर चर नहीं है। अपने git config में डालने से कुछ नहीं होगा।
हाँ, एक विन्यास है जिसे .gitconfig
उदाहरण के लिए बदला जा सकता है :
[push]
default = current
जो वर्तमान शाखा को प्राप्त होने वाले छोर पर उसी नाम के साथ एक शाखा को अद्यतन करने के लिए धक्का देगा।
जॉचो:
git config --global --get push.default
देखें: Git-config ।
--set-upstream
झंडा पदावनत है और निकाल दिया जाएगा। इसलिए, का उपयोग करें --track
या--set-upstream-to
उदाहरण: यदि आप इस शाखा के लिए ट्रैकिंग जानकारी सेट करना चाहते हैं तो आप ऐसा कर सकते हैं:
git branch --set-upstream-to=<remote>/<branch> develop
--set-upstream-to=
यह आपके ट्रैकिंग जानकारी के बारे में पता नहीं होने पर गिट द्वारा उल्लेख किया जा रहा है। पदावनति का कोई उल्लेख नहीं है।
यहां एक git उपनाम है जो मान नहीं रहा है कि रिमोट एक origin
शाखा को ट्रैक नहीं कर रहा है, तो संभालता है।
pullh = "!f() { set -e; set -o pipefail; arr=($(git rev-parse --abbrev-ref @{u} | sed 's/\\//\\n/')); git pull ${arr[0]} ${arr[1]}; }; f"
(डिस्क्लेमर: मैं बहुत बैश नौसिखिया हूं और ऊपर शायद बहुत सरल हो सकता है।)