full - integrate git bash with visual studio code




गिटहब को धक्का नहीं दे सकता-कहता है कि मर्ज की ज़रूरत है (20)

इससे दूरस्थ भंडार कम हो सकता है; देखभाल के साथ इसका इस्तेमाल करें।

यदि आप दूरस्थ शाखा को अपनी स्थानीय शाखा में विलय नहीं करना चाहते हैं ( गिट diff के साथ मतभेद देखें), और एक बल धक्का करना चाहते हैं, तो पुश कमांड का उपयोग करें -f

git push -f origin <branch>

जहां origin आपके remote रेपो का नाम है।

आम तौर पर, कमांड रिमोट रेफरी को अपडेट करने से इंकार कर देता है जो स्थानीय रेफरी का पूर्वज नहीं है जिसे इसे ओवरराइट किया जाता है। यह ध्वज चेक अक्षम करता है। इससे दूरस्थ भंडार कम हो सकता है; देखभाल के साथ इसका इस्तेमाल करें।

मैं GitHub लिए नया हूँ। आज जब मैं गिटहब में अपना कोड धक्का देने की कोशिश कर रहा था तो मैंने कुछ मुद्दे से मुलाकात की।

Pushing to [email protected]:519ebayproject/519ebayproject.git
To [email protected]:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

मैंने अभी तक भंडार में कुछ भी नहीं धक्का दिया है, तो मुझे कुछ खींचने की ज़रूरत क्यों है?


क्या आपकी शाखा का नाम दूरस्थ शाखा नाम जैसा ही है?

यदि नहीं, तो आपको रिमोट शाखा के समान नाम वाली एक नई शाखा की जांच करनी चाहिए और उसे फिर से धक्का देने का प्रयास करना चाहिए।

मान लें कि आप जिस दूरस्थ शाखा को धक्का देना चाहते हैं वह है [ परीक्षण ] और आपकी स्थानीय शाखा को [ test ] के रूप में नामित किया गया है।

यदि आप परीक्षण शाखा में नहीं हैं, तो पहले इसे स्विच करें।

git checkout test

फिर एक नई शाखा खोलें और इसे परीक्षण करें

git checkout -b testing

अब, इसे धक्का देने का समय है:

git push [remote repo] testing

इस समस्या का एक अन्य कारण (स्पष्ट रूप से इतना आम नहीं है) ...

मेरा सर्वर ~ 12 घंटे के पीछे था जब मैंने धक्का दिया था

मैंने सर्वर पर एनटीपी कॉन्फ़िगर किया मेरी घड़ी SYNC।

मैंने एक नया गिट पुश निष्पादित किया जिसने इस पोस्ट में चर्चा की गई त्रुटि का नेतृत्व किया।


उपरोक्त उत्तरों के अलावा, निम्नलिखित मेरे लिए काम किया: -

परिदृश्य -

  1. मैंने my_branch को मूल रूप से मूल रूप से धक्का दिया।
  2. मैंने कुछ और बदलाव किए।
  3. जब मैंने दोबारा धक्का देने की कोशिश की, (जोड़ने के बाद, निश्चित रूप से प्रतिबद्ध), मुझे उपर्युक्त त्रुटि मिली।

उपाय -

 1. git checkout **my_branch**
 2. git add, commit your changes.
 3. git pull origin **my_branch** (not origin, master, or develop)
 4. git push origin **my_branch**


कभी-कभी हम स्थानीय पर्यावरण में खींचने और बहुत सारे काम करने के लिए भूल गए।

अगर कोई पुल के बिना धक्का देना चाहता है,

git push --force

काम कर रहा है। अन्य लोगों के साथ काम करते समय इसकी अनुशंसा नहीं की जाती है, लेकिन जब आपका काम एक साधारण चीज़ या व्यक्तिगत खिलौना प्रोजेक्ट है, तो यह एक त्वरित समाधान होगा।


क्या आपने धक्का देने से पहले अपना कोड अपडेट किया है?

कुछ भी धक्का देने से पहले git pull origin master प्रयोग करें।

मुझे लगता है कि आप अपने रिमोट के नाम के रूप में origin का उपयोग कर रहे हैं।

कुछ धक्का देने से पहले आपको अपने स्थानीय भंडार को अद्यतित करने के लिए पुश से पहले खींचने की आवश्यकता है (बस अगर किसी और ने github.com पर कोड अपडेट कर लिया हो)। यह स्थानीय रूप से संघर्षों को हल करने में मदद करता है।


जब मैंने अपनी वर्तमान शाखा foobar को धक्का देने की कोशिश की तो मुझे ऊपर उल्लिखित त्रुटि संदेश मिल रहा था:

git checkout foobar
git push origin foo

यह पता चला कि मेरे पास एक ही रिमोट शाखा को ट्रैक करने वाली दो स्थानीय शाखाएं थीं:

foo -> origin/foo (some old branch)
foobar -> origin/foo (my current working branch)

यह मेरे द्वारा उपयोग की जाने वाली मेरी वर्तमान शाखा को धक्का देने के लिए काम किया:

git push origin foobar:foo

... और git branch -d साथ सफाई करने के लिए- git branch -d


जैसा कि संदेश आपको बताता है,

रिमोट परिवर्तनों को मर्ज करें (उदाहरण के लिए 'गिट पुल')

रिमोट रिपोजिटरी से अपने स्थानीय भंडार में नवीनतम परिवर्तन git pull लिए git pull का उपयोग करें। इस मामले में, परिवर्तनों को खींचने के लिए विलय की आवश्यकता होगी क्योंकि आपने अपने स्थानीय भंडार में परिवर्तन किए हैं।

मैं एक उदाहरण और व्याख्या करने के लिए एक तस्वीर प्रदान करूंगा। आइए मान लें कि मूल / शाखा से आपकी आखिरी खींच कमिट बी में थी। आपने कुछ काम पूरा कर लिया है और प्रतिबद्ध किया है (कमिट सी)। साथ ही, किसी और ने अपना काम पूरा कर लिया है और इसे मूल / शाखा (Commit D) पर धक्का दिया है। इन दो शाखाओं के बीच एक विलय होने की आवश्यकता होगी।

local branch:                         --- Commit C 
                                    /
                                   /
                                  /
origin/branch: Commit A ------ Commit B ---- Commit D

क्योंकि आप वह हैं जो धक्का देना चाहते हैं, गिट आपको मर्ज करने के लिए मजबूर करता है। ऐसा करने के लिए, आपको पहले मूल / शाखा से परिवर्तनों को खींचना होगा।

local branch:                         --- Commit C -- Commit E
                                    /               /           
                                   /               /             
                                  /               /               
origin/branch: Commit A ------ Commit B ---- Commit D 

विलय को पूरा करने के बाद, अब आपको अपने परिवर्तनों को दबाकर Commit E को तेजी से आगे बढ़ने की अनुमति दी जाएगी।

गिट की आवश्यकता है कि आप स्वयं विलीन हो जाएं, क्योंकि विलय से विवाद हो सकता है।


बशर्ते कि कोई भी शाखा के साथ काम नहीं कर रहा है, मेरा अनुमान है कि आपने निम्न कार्य किया है:

1. $git commit                    #you committed your changes. 
2. $git push origin <branch>      #you pushed your commit to remote origin (yeah, success!)
3. $git commit --amend            #you did some changes locally and committed with --amend 
4. $git push origin <branch>      #you pushed the "old", just amended commit to the remote origin and you thought "WTF?".

चरण 4. आपकी समस्या का कारण है, imho ...


बस एक ही मुद्दा था लेकिन मेरे मामले में मैंने रिमोट पर गलत शाखा टाइप की थी। तो, ऐसा लगता है कि इस मुद्दे का एक और स्रोत है ... डबल चेक आप सही शाखा में धक्का दे रहे हैं।


मुझे एक ही समस्या थी, मैंने जो किया वह मैंने इसे पहले इस्तेमाल करके मजबूर कर दिया था

git push -f

मैंने फ़ाइलों को कम करने के बाद ऐसा किया और आपको मिलने वाली त्रुटि मिल रही थी। उसने सभी फाइलें कीं और इसे धक्का दिया। तब अगली बार जब मैं जिथूब को दबा रहा था। मैंने जो किया उससे उसने पूछा और यह ठीक था। उम्मीद है कि यह आपके लिए भी काम करता है :)


मुझे भी वही त्रुटि मिल रही थी, और 100% यकीन नहीं है कि यह सब के लिए काम करता है, लेकिन, मेरे लिए,

git pull [.]

काम किया। [।] ने मेरे मामले में कुछ अंतर किया।


मेरे मामले में, मैंने "माइब्रैंच" चेक आउट किया था, और git pull किया था, इसलिए मुझे पता नहीं लगा कि पुश क्यों काम नहीं कर रहा था। आखिरकार, मुझे एहसास हुआ कि मैं गलत शाखा को दबा रहा था। मैं git push origin mybranch बजाय git push origin master टाइप कर रहा था।

तो यदि आप पहले ही git pull कर चुके हैं और अभी भी यह संदेश प्राप्त कर चुके हैं, तो सुनिश्चित करें कि आप सही शाखा को दबा रहे हैं।


मैंने अपने जीआईटी भंडार में इस मुद्दे को हल किया है। इस मामले में rebase या force देने की कोई ज़रूरत नहीं है। इसे हल करने के लिए नीचे दिए गए चरणों का उपयोग करें -

local_barnch> git branch --set-upstream to=origin/<local_branch_name> 

local_barnch>git pull origin <local_branch_name>

local_barnch> git branch --set-upstream to=origin/master

local_barnch>git push origin <local_branch_name>

उम्मीद है कि यह मदद करेगा।


मैंने एक ही समस्या का अनुभव किया और यह पता चला कि मैं एक अलग (स्थानीय) शाखा पर था, जैसा कि मैंने सोचा था कि मैं था और रिमोट से सही स्थानीय शाखा पीछे थी।

मेरा समाधान: सही शाखा की जांच करें, चेरी-अन्य स्थानीय शाखा, गिट पुल और गिट पुश से प्रतिबद्धता चुनें


यदि आप अपने वर्तमान प्रोजेक्ट में खींचना नहीं चाहते हैं (और संभावित रूप से मर्ज विवादों का सामना करना चाहते हैं जिन्हें आप हल करने की परवाह नहीं करते हैं) और आप एक और शाखा नहीं बनाना चाहते हैं (यह किसी अन्य शाखा का प्रबंधन करने के लिए कठिन होगा), और आप डॉन नहीं करते हैं कोई जोखिम भरा और स्थायी गिट force कमांड नहीं करना चाहता (जो कि वे जो भी करते हैं उसे पढ़ने के बाद भी मैं इसे करने के प्रभावों के बारे में अक्सर आश्चर्यचकित हूं)।

समाधान : आप बस अपने फ़ोल्डर की सामग्री को किसी अन्य फ़ोल्डर में खींच सकते हैं, प्रोजेक्ट को अपने खाली फ़ोल्डर में खींचें, खींचें सामग्री को ट्रैश में खींचें, फिर अपनी सही प्रोजेक्ट को फ़ोल्डर में वापस खींचें। आपको ठीक से धक्का देने और वांछित परिणाम प्राप्त करने में सक्षम होना चाहिए। यह सचमुच मुझे ऐसा करने के लिए 10 सेकंड से भी कम समय लेता है।

उन लोगों के लिए जो मुझे बताएंगे कि यह किसी भी परिणाम का हवाला देते हुए उचित नहीं है, या लोग मुझे ऐसे आदेश का उपयोग करने के लिए कह रहे हैं जो मुझे भविष्य में परेशानियों का कारण बनता है, मैं कहता हूं: "यह विधि सचमुच मुझे 10 सेकंड से भी कम समय लेती है।" अगर मुझे एक गिट कमांड का सामना करना पड़ता है जो कार्यान्वित करने के लिए 10 सेकंड से भी कम समय लेता है और इसका सटीक प्रभाव पड़ता है, तो मैं इसे अपनाएगा। तब तक, मैं इस विधि का उपयोग कर रहा हूँ।

इस विधि का एक नकारात्मक पक्ष यह है कि जब आप वास्तव में किसी शाखा में विलय किए बिना विलय किए जाते हैं तो आपका प्रतिबद्धता इतिहास रैखिक दिखाई देगा। समूहों के साथ काम करते समय यह सबसे अच्छा तरीका नहीं हो सकता है। उन मामलों में शाखाओं पर काम!


यदि किसी भी मौके से git pull प्रिंट Already up-to-date तो आप वैश्विक गिट push.default param ( ~/.gitconfig ) को ~/.gitconfig । अगर यह matching में था तो इसे simple सेट करें। नीचे दिया गया जवाब बताता है कि क्यों:

गिट - push.default "मिलान" और "सरल" के बीच क्या अंतर है

साथ ही, यह जांचने लायक है कि क्या आपकी स्थानीय शाखा git remote show origin का उपयोग कर पुरानी है और यदि आवश्यक हो तो पुल करें


यह आमतौर पर तब होता है जब आप git commit और उस शाखा x पर git pulling से पहले git push परिवर्तनों को git commit का प्रयास करते हैं, जहां किसी और ने पहले से ही बदलाव किए हैं।

सामान्य प्रवाह नीचे जैसा होगा,

चरण 1 : git stash उस शाखा पर अपने स्थानीय अनुमोदित परिवर्तनों को छीन ले।

चरण 2 : उस शाखा पर स्थानीय रूप से किए गए परिवर्तनों को pull and merge करने के लिए git pull origin branch_name -v ( इसे कुछ संदेश मर्ज करें, और यदि कोई हो तो संघर्ष ठीक करें। )

चरण 3 : git stash pop stash एड परिवर्तनों को git stash pop करें ( फिर आप पॉप-अप फ़ाइलों पर काम कर सकते हैं यदि आप पहले से ही प्रतिबद्ध परिवर्तन (STEP4) को पहले चाहते हैं या बाद में फ़ाइलों को नया प्रतिबद्ध बनाते हैं। )

चरण 4 : git push origin branch_name -v विलय परिवर्तन।

branch_name को master साथ बदलें ( master शाखा के लिए)।


git pull प्रिंट पहले से ही up-to-date

उपाय:

आपको रिमोट (सर्वर) में एक रिपोजिटरी / प्रोजेक्ट बनाया जा सकता है और वहां कुछ फाइलें जोड़ दी गई हैं, फिर फिर से आपके स्थानीय और प्रारंभिक गिट git init में एक फ़ोल्डर बनाया - यह गलती है कि आपको स्थानीय में git init नहीं बनाना चाहिए, बल्कि प्रोजेक्ट क्लोन करें git clone का उपयोग कर अपने स्थानीय को

फिर खींचो


git pull origin branch_name --rebase

यह मेरे लिए काम करता है - कमांड git pull origin branch_name --rebase पहले दूरस्थ शाखा_नाम से परिवर्तन खींच लेगा, फिर इसके शीर्ष पर मौजूदा शाखा को रीबेस करें।







git