मैं कुछ मुझे git pull
या git fetch && git merge
के परिणाम दे देंगे कि लागू करने के लिए कोशिश कर रहा हूँ। मुझे यह काम मिल रहा है, लेकिन मेरी समस्या यह है कि निम्नलिखित कोड चलाने के बाद, वर्तमान रेपो सोच रहा है कि स्थानीय परिवर्तन किए जाने हैं।Git2go - खींच && विलय
जहाँ तक मैं देख सकता हूं, मुझे विश्वास है कि मैं शायद सही सिर से एनोटेटेड प्रतिबद्धता नहीं बना रहा हूं या मुझे एक और प्रतिबद्धता की आवश्यकता है? (मुझे यकीन नहीं है)।
मेरे कोड इस तरह दिखता है और मैं अटक कर रहा हूँ:
func (repo *Repo) Pull() error {
// Get remote
remote, err := repo.Remotes.Lookup("origin")
if err != nil {
remote, err = repo.Remotes.Create("origin", repo.Path())
if err != nil {
return err
}
}
// Get the branch
branch, err := repo.Branch()
if err != nil {
return err
}
// Get the name
branchName, err := branch.Name()
if err != nil {
return err
}
if err := remote.Fetch([]string{}, &git.FetchOptions{}, ""); err != nil {
return err
}
// Merge
remoteRef, err := repo.References.Lookup("refs/remotes/origin/" + branchName)
if err != nil {
return err
}
mergeRemoteHead, err := repo.AnnotatedCommitFromRef(remoteRef)
if err != nil {
return err
}
mergeHeads := make([]*git.AnnotatedCommit, 1)
mergeHeads[0] = mergeRemoteHead
if err = repo.Merge(mergeHeads, nil, nil); err != nil {
return err
}
return nil
}
इसे चलाने के बाद, मैं परिवर्तन दूरस्थ विलय कर से और कार्यशील निर्देशिका अद्यतन मिलता है, लेकिन यह मुझसे कहता है कि मैं एक प्रतिबद्ध बनाने की जरूरत है।
मुझे लगता है मैं this question की ओ पी के रूप में एक ऐसी ही समस्या है।
पर पूरा फ़ंक्शन खोजें क्या आप थोड़ा सा विस्तार कर सकते हैं कि मुझे प्रतिबद्धता क्यों बनाना है? ये 'उत्पत्ति' से आने वाले परिवर्तन हैं। क्या उन्हें मंचन किया जाना चाहिए? क्या यह सिर्फ उन परिवर्तनों को दोबारा नहीं खेलना चाहिए और मुझे एक स्वच्छ कार्यशील निर्देशिका के साथ छोड़ देना चाहिए (बशर्ते कि हमने स्थानीय रूप से कोई बदलाव नहीं किया हो)। यह फ़ंक्शन चरण परिवर्तन स्थानीय रूप से नहीं किया जाता है, और रिमोट से खींचा जाने वाला काम रिकॉर्ड नहीं करता है। – Sthe
libgit2 (और इसकी बाइंडिंग) गिट (चीनी मिट्टी के बरतन) कमांड लाइन की तुलना में निचले स्तर पर काम करती है। विशेष रूप से, git2go का 'मर्ज' बहुत कम करता है जो 'गिट मर्ज' करता है। जबकि डिफ़ॉल्ट रूप से 'गिट मर्ज' फास्ट-फॉरवर्ड विलय को सरल बनाने में सक्षम है (वास्तव में कोई विलय नहीं होता है, '--ff' देखें), git2go का' मर्ज 'स्पष्ट रूप से एक मर्ज बनाता है, भले ही एक फास्ट-फॉरवर्ड था मुमकिन। बदले में एक विलय हमेशा विलय प्रतिबद्ध बनाता है, और कुछ करने के लिए, सूचकांक को पॉप्युलेट किया जाना चाहिए। फिर git2go की 'मर्ज' बहुत कम स्तर है और आपको कोई संघर्ष नहीं होने पर भी स्पष्ट रूप से प्रतिबद्ध करने की आवश्यकता है। – sschuberth