Git पुश कुछ भी नहीं करेगा (सब कुछ अप-टू-डेट)


100

मैं GitHub पर Git रिपॉजिटरी को अपडेट करने की कोशिश कर रहा हूं। मैंने परिवर्तनों का एक गुच्छा बनाया, उन्हें जोड़ा, फिर प्रतिबद्ध करने का प्रयास किया git push। प्रतिक्रिया मुझे बताती है कि सब कुछ अप टू डेट है, लेकिन स्पष्ट रूप से यह नहीं है।

git remote show origin

जवाब के साथ मुझे उम्मीद है कि भंडार होगा।

Git मुझे क्यों बता रहा है कि जब स्थानीय रिपॉजिटरी दिखाई नहीं दे रही है तो रिपॉजिटरी अप टू डेट है।

  [searchgraph]  git status
# On branch develop
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       Capfile
#       config/deploy.rb
nothing added to commit but untracked files present (use "git add" to track)

  [searchgraph]  git add .

  [searchgraph]  git status
# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   Capfile
#       new file:   config/deploy.rb
#

  [searchgraph]  git commit -m "Added Capistrano deployment"
[develop 12e8af7] Added Capistrano deployment
 2 files changed, 26 insertions(+), 0 deletions(-)
 create mode 100644 Capfile
 create mode 100644 config/deploy.rb

  [searchgraph]  git push
Everything up-to-date

  [searchgraph]  git status
# On branch develop
nothing to commit (working directory clean)

जवाबों:


142

git pushआपकी सभी स्थानीय शाखाओं को धक्का नहीं देता: यह कैसे पता चलेगा कि कौन सी दूरस्थ शाखाएँ उन्हें धक्का दे रही हैं? यह केवल स्थानीय शाखाओं को धक्का देता है जिन्हें किसी विशेष दूरस्थ शाखा में धकेलने के लिए कॉन्फ़िगर किया गया है।

मेरे संस्करण के Git (1.6.5.3) पर, जब मैं git remote show originइसे चलाता हूं तो वास्तव में प्रिंट करता है कि कौन सी शाखाएं पुश के लिए कॉन्फ़िगर की गई हैं:

Local refs configured for 'git push':
  master pushes to master (up to date)
  quux   pushes to quux   (fast forwardable)

प्र। लेकिन मैं masterइस सब के बारे में चिंता किए बिना धक्का दे सकता था!

जब आप git cloneडिफ़ॉल्ट रूप masterसे रिमोट की masterशाखा (जिसे स्थानीय रूप में संदर्भित किया जाता है origin/master) पर धकेलने के लिए अपनी स्थानीय शाखा को सेट करते हैं , इसलिए यदि आप केवल प्रतिबद्ध हैं master, तो एक साधारण git pushहमेशा आपके परिवर्तनों को पीछे धकेल देगा।

हालाँकि, आपके द्वारा पोस्ट किए गए आउटपुट स्निपेट से, आप एक शाखा पर हैं develop, जिसे मैं अनुमान लगा रहा हूं कि किसी भी चीज़ को पुश करने के लिए सेट नहीं किया गया है। तो git pushबिना किसी तर्क के उस शाखा पर आने वाले लोगों को धक्का नहीं लगेगा।

जब यह कहता है "सब कुछ अप-टू-डेट", तो इसका मतलब है "सभी शाखाएं जो आपने मुझे बताई हैं कि कैसे पुश अप करना है"।

Q. तो मैं अपने कमिट को कैसे धकेल सकता हूं?

यदि आप जो करना चाहते हैं, उसमें अपने बदलावों को शामिल developकिया जाए origin/master, तो आपको संभवतः उन्हें अपने स्थानीय में मिलाना चाहिए, फिर masterउसे धक्का दें:

git checkout master
git merge develop
git push             # will push 'master'

यदि आप चाहते हैं developकि रिमोट पर एक शाखा बनाई जाए , जिससे अलग हो master, तो तर्क दें git push:

git push origin develop

वह: रिमोट नामक एक नई शाखा का निर्माण करेगा develop; और उस शाखा को अपनी स्थानीय developशाखा के साथ तारीख तक लाएँ ; और भविष्य में तर्क के बिना developधक्का देने के लिए सेट करने के लिए स्वचालित रूप से धक्का होगाorigin/developgit pushdevelop

यदि आप अपने स्थानीय developको दूरस्थ शाखा में धकेलना चाहते हैं , तो इसके अलावा कुछ और कहा developजा सकता है:

git push origin develop:something-else

हालाँकि, वह प्रपत्र भविष्य में हमेशा धकेलने के लिए सेट नहीं किया जाएगा; यह एक-शॉट ऑपरेशन है।developorigin/something-else


बहुत बहुत धन्यवाद, आपकी पकड़ धक्का उत्पत्ति विकसित होती है: कुछ और ने सवाल का जवाब दिया है जो मुझे थोड़ी देर के लिए नहीं मिल पा रहा था।
एंट्रॉइड

1
मेरे मामले git push origin xमें अभी भी भविष्य में धकेलने के लिए शाखा x की स्थापना नहीं की जा रही थी। यह .gitconfig [remote "origin"]अनुभाग में एक विशिष्ट पुशस्पेक के कारण था जो गिट के व्यवहार का कारण बन रहा था।
रमन

27

यह मेरे साथ तब हुआ जब मेरा सोर्सट्री एप्लिकेशन स्टेजिंग के दौरान क्रैश हो गया। और कमांड लाइन पर, ऐसा लग रहा था कि पिछले git addभ्रष्ट हो गया था। यदि यह मामला है, तो प्रयास करें:

git init
git add -A
git commit -m 'Fix bad repo'
git push

अंतिम आदेश पर, आपको शाखा सेट करने की आवश्यकता हो सकती है।

git push --all origin master

इस बात को ध्यान में रखें कि यदि आपने कोई शाखा या उस प्रकार का कोई कार्य नहीं किया है तो यह पर्याप्त है। उस स्थिति में, सुनिश्चित करें कि आप सही शाखा की ओर धकेलते हैं git push origin develop


15

प्रयत्न:

git push --all origin

यह रेपो पर अलग-अलग शाखाओं को धकेलता है, न कि एक शाखा से मास्टर में।
श्रीदेवी J

13

कृपया अंतिम प्रतिबद्ध पर जाने का प्रयास करें और फिर करें git push origin HEAD:master


1
यह वास्तव में काम किया। क्या आप यह बताना चाहेंगे कि इसने काम क्यों किया?
रेने Nyffenegger

डॉक्स से शाब्दिक रूप से:Push the current branch to the remote ref matching master in the origin repository. This form is convenient to push the current branch without thinking about its local name.
uruapanmexicansong

मेरे लिए भी काम किया
यरद रत्नाम

मैंने तुलना की कि मेरा रेपो कैसे कॉन्फ़िगर किया गया है और सभी शाखाएं समान दिखती हैं। फिर भी, एक शाखा में मैं बस इस्तेमाल नहीं कर सकता git push: / यह मेरे लिए भी काम किया git push origin HEAD:my_branch_name:।
iaforek

6

मेरे मामले के लिए, किसी भी अन्य समाधान ने काम नहीं किया। मुझे नई संशोधित फ़ाइलों का बैकअप लेना चाहिए (साथ दिखाया गया है git status), और एक चलाएं git reset --hard। इसने मुझे दूरस्थ सर्वर के साथ पुन: निर्माण करने की अनुमति दी। नई संशोधित फ़ाइलें जोड़ना, और चलाना

git add .
git commit -am "my comment"
git push

की चाल चली। मुझे उम्मीद है कि यह किसी को "अंतिम मौका" समाधान के रूप में मदद करता है।


4

अभी, ऐसा प्रतीत होता है जैसे आप विकसित शाखा पर हैं। क्या आपके पास अपने मूल पर एक विकसित शाखा है? यदि नहीं, तो प्रयास करें git push origin developgit pushआपके मूल में एक विकसित शाखा के बारे में जानने के बाद यह काम करेगा।

आगे पढ़ने के रूप में, मैं विशेष रूप से उदाहरण अनुभाग, गिट-पुश मैन पेजों पर एक नज़र डालूंगा


3

विशिष्ट होने के लिए, यदि आप मास्टर में कुछ विलय करना चाहते हैं, तो आप नीचे दिए गए चरणों का पालन कर सकते हैं।

git add --all // If you want to stage all changes other options also available
git commit -m "Your commit message"
git push // By default when it clone is sets your origin to master or you would have set sometime with git push -u origin master.

यह पुल अनुरोध मॉडल में एक नई स्थानीय शाखा बनाने के लिए एक आम बात है और फिर उस शाखा को रिमोट पर धकेलें। इसके लिए आपको यह उल्लेख करने की आवश्यकता है कि आप रिमोट पर अपने परिवर्तनों को कहाँ धकेलना चाहते हैं। आप इसे पुश के समय रिमोट का उल्लेख करके कर सकते हैं।

git push origin develop // It will create a remote branch with name "develop".

यदि आप अपने स्थानीय शाखा के नाम के अलावा एक शाखा बनाना चाहते हैं, तो आप निम्न आदेश के साथ ऐसा कर सकते हैं।

git push origin develop:some-other-name

2

सैम स्टोक्स का शुक्रिया। उनके जवाब के अनुसार आप समस्या को अलग तरीके से हल कर सकते हैं (मैंने इस तरह से इस्तेमाल किया)। अपनी विकसित निर्देशिका को अपडेट करने के बाद आपको इसे फिर से संगठित करना चाहिए

git init

फिर आप अपडेट कर सकते हैं और अपडेट को मास्टर करने के लिए धक्का दे सकते हैं


1
धन्यवाद! मेरे मामले में, टाइप करें: git initऔर एक नया कमांड टैब खोलें, टाइप करें:git push origin branch_name
s7ven

2

यह मेरे साथ तब हुआ जब मैं गीथहब ^Cके बीच में था git push। GitHub ने यह नहीं दिखाया कि परिवर्तन किए गए थे, फिर भी।

इसे ठीक करने के लिए, मैंने अपने काम के पेड़ में बदलाव किया, प्रतिबद्ध किया, और फिर फिर से धक्का दिया। यह पूरी तरह से ठीक काम किया।


2

मेरे साथ ऐसा हुआ। मैंने केवल परिवर्तनों को फिर से प्रतिबद्ध किया, और फिर इसे आगे बढ़ाया।


2

मैंने यहां परिभाषित सहित कई तरीकों की कोशिश की। मुझे जो मिला है,

  • सुनिश्चित करें कि भंडार का नाम मान्य है। सबसे अच्छा तरीका है कि रिपॉजिटरी साइट से लिंक को कॉपी करें और गिट बैश में पेस्ट करें।

  • सुनिश्चित करें कि आपने चयनित फ़ाइलों को शुरू कर दिया है।

    git commit -m "Your commit here"
    
  • यदि दोनों चरण काम नहीं करते हैं, तो प्रयास करें

    git push -u -f origin master


1

इसके बजाय, आप निम्नलिखित प्रयास कर सकते हैं। आपको जाना नहीं है master; आप अपनी शाखा से परिवर्तनों को सीधे बल दे सकते हैं।

जैसा कि ऊपर बताया गया है, जब आप एक छूट देते हैं, तो आप अपनी शाखा पर इतिहास बदल रहे हैं। परिणामस्वरूप, यदि आप git pushरिबेस के बाद एक सामान्य करने की कोशिश करते हैं , तो Git इसे अस्वीकार कर देगा क्योंकि सर्वर पर आपकी शाखा की ओर से कमिट से सीधा रास्ता नहीं है। इसके बजाय, आपको गिट को यह बताने के लिए -fया --forceध्वज का उपयोग करने की आवश्यकता होगी कि हां, आप वास्तव में जानते हैं कि आप क्या कर रहे हैं। जब बल धक्का होता है, तो यह अत्यधिक अनुशंसा की जाती है कि आप अपनी push.defaultकॉन्फ़िगरेशन सेटिंग को सरल पर सेट करें , जो कि Git 2.0 में डिफ़ॉल्ट है। यह सुनिश्चित करने के लिए कि आपका कॉन्फ़िगरेशन सही है, चलाएँ:

$ git config --global push.default simple

एक बार सही होने के बाद, आप बस चला सकते हैं:

$ git push -f

और अपने पुल अनुरोध की जाँच करें। इसे अपडेट किया जाना चाहिए!

अधिक जानकारी के लिए एक रिक्वेस्ट को कैसे रिबास करें, इसके नीचे जाएं ।


0

यह भी सुनिश्चित करें कि आप सही शाखा पर जोर दे रहे हैं।


0

यह मेरे साथ हुआ जब मैंने एक नई शाखा से धक्का देने की कोशिश की और मैंने git push origin masterइसके बजाय इस्तेमाल किया। आपको या तो:

  • उपयोग करें: git push origin your_new_branchयदि आप चाहते हैं कि यह शाखा दूरस्थ रेपो में भी हो।
  • अपनी मास्टर ब्रांच में चीज़ों की जाँच करें और फिर मास्टर से गीट रेपो में पुश करें git merge origin master

रिकैप: यहाँ बिंदु यह है कि आपको यह जाँच करनी चाहिए कि आप git मर्ज के लिए दूसरे पैरामीटर पर कहाँ प्रस्तुत करते हैं । इसलिए यदि आप मास्टर उपयोग मास्टर में दूसरे पैरामीटर के रूप में हैं यदि आप new_branch में हैं तो इसे दूसरे पैरामीटर के रूप में उपयोग करें यदि आप इस शाखा को रिमोट रेपो में रखना चाहते हैं तो इसके बजाय ऊपर दिए गए दूसरे विकल्प का विकल्प चुनें।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.