2011-03-09 18 views
7

धक्का नहीं दे सकता है बस जब मैंने सोचा कि मुझे गिट चेकआउट -बी न्यूब्रैंच - प्रतिबद्ध/प्रतिबद्ध/प्रतिबद्ध - गिट चेकआउट मास्टर - गिट विलय newbranch - git rebase -i मास्टर - गिट पुश गिट में वर्कफ़्लो, कुछ उड़ा, और मुझे इसके लिए कोई कारण नहीं दिख रहा है।गिट स्थानीय मास्टर शाखा ने रिमोट/मूल/मास्टर को ट्रैक करना बंद कर दिया है,

यहाँ सामान्य कार्यप्रवाह, जो अतीत में मेरे लिए काम किया है है:

# make sure I'm up to date on master: 
$ git checkout master 
$ git pull # k, no conflicts 
# start my new feature 
$ git checkout -b FEATURE9 # master @ 2f93e34 

Switched to a new branch 'FEATURE9' 

... काम, प्रतिबद्ध, काम, प्रतिबद्ध, काम, प्रतिबद्ध ...

$ git commit -a 
$ git checkout master 
$ git merge FEATURE9 
$ git rebase -i master # squash some of the FEATURE9 ugliness 

अभी तक ठीक है; अब मैं क्या देखने की उम्मीद - - और सामान्य रूप से दिख रहा है यह है:

$ git status 

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

लेकिन बजाय, मैं सिर्फ देख "प्रतिबद्ध करने के लिए कुछ भी नहीं (कार्यशील निर्देशिका स्वच्छ)", नहीं "आपका शाखा आगे है 'मूल/मास्टर' के 1 से प्रतिबद्ध ", और Git पुल इस weirdness पता चलता है:।

$ git pull 
From .          # unexpected 
* branch   master  -> FETCH_HEAD # unexpected 
Already up-to-date.       # expected 

और Git शाखा -एक -v यह दिखाता है:

$ git branch -a -v 

    FEATURE9     3eaf059 started feature 9 
* master     3eaf059 started feature 9 
    remotes/origin/HEAD  -> origin/master 
    remotes/origin/master 2f93e34 some boring previous commit # should=3eaf059 

गिट शाखा स्पष्ट रूप से दिखाती है कि मैं वर्तमान में * मास्टर पर हूं, और गिट लॉग स्पष्ट रूप से दिखाता है कि मास्टर (स्थानीय) 3eaf059 पर है, जबकि रिमोट/मूल/HEAD -> रिमोट/मूल/मास्टर कांटा पर वापस अटक गया है।

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

(नोट: मैं रेपो एक नया निर्देशिका में फिर से क्लोन और मैन्युअल रूप से परिवर्तन फिर से लागू है, और सब कुछ ठीक काम किया, लेकिन मुझे लगता है कि मानक वैकल्पिक हल होने के लिए नहीं करना चाहती।)

Addendum: शीर्षक कहता है "धक्का नहीं दे सकता", लेकिन कोई त्रुटि संदेश नहीं है। गिट शाखा-ए-वी दिखाता है कि स्थानीय मास्टर/रिमोट/मूल/मास्टर से आगे है, तो मुझे बस "पहले से अद्यतित" प्रतिक्रिया मिलती है।

$ git pull 
From . 
* branch   master  -> FETCH_HEAD 
Already up-to-date. 

$ git remote -v 
origin [email protected]:proj.git (fetch) 
origin [email protected]:proj.git (push) 

परिशिष्ट 2:: यहाँ Git से उत्पादन खींच और Git दूरस्थ -v क्रमश है ऐसा लगता है जैसे अपने स्थानीय गुरु के दूरदराज के धक्का लिए कॉन्फ़िगर किया गया है, लेकिन नहीं इसे खींचो। for remote in 'git branch -r | grep -v master '; do git checkout --track $remote ; done करने के बाद, मेरे पास यह है। ऐसा लगता है कि मुझे मास्टर को को रिमोट/मूल/मास्टर से फिर से खींचने की आवश्यकता है, नहीं?

$ git remote show origin 
* remote origin 
    Fetch URL: [email protected]:proj.git 
    Push URL: [email protected]:proj.git 
    HEAD branch: master 
    Remote branches: 
    experiment_f tracked 
    master tracked 
    Local branches configured for 'git pull': 
    experiment_f merges with remote experiment_f 
    Local refs configured for 'git push': 
    experiment_f pushes to experiment_f (up to date) 
    master pushes to master (local out of date) 
+1

क्या आप अपने प्रश्न में 'git remote -v' से आउटपुट जोड़ सकते हैं। –

+0

इसके अलावा, आप शीर्षक शीर्षक 'पुश' के साथ समस्याओं का संदर्भ देते हैं, लेकिन आपके पास 'push' के साथ त्रुटि संदेशों के बारे में कोई जानकारी नहीं है। –

+1

आपको रिमोट्स (यानी आपकी 'मास्टर' शाखा) ट्रैक करने वाली शाखाओं को रिब करने के साथ सावधान रहना होगा क्योंकि यह इतिहास को फिर से लिख देगा और या तो स्वयं या आपके रिमोट-रिपोजिटरी को भ्रमित करना संभव है। यदि आप स्क्वैश करना चाहते हैं तो आप उन्हें फीचर शाखा * पर स्क्वैश करना चाहते हैं * इससे पहले कि यह मास्टर तक विलय हो जाए, जब तक कि आप इसके साथ अधिक आरामदायक न हों। – nickgrim

उत्तर

5

आप करते हैं एक git pull आप वास्तव में एक git push करना चाहते थे कब?

किसी कारण से git pull आपकी वर्तमान निर्देशिका से "खींच रहा है", मुझे संदेह है कि आप remotes/origin/HEAD से खींचना चाहते हैं।

git push origin उत्पादन क्या उत्पादन करता है?

[पॉल द्वारा अनुपूरक]: इससे मुझे सही उत्तर मिल गया, इसलिए मैं स्वीकार कर रहा हूं। अतिरिक्त कदम यह पता लगाने की क्या चल रहा था ले लिया थे:

# see details of the current config: 
$ git config -l 
branch.master.remote=. # uh oh, this should point to origin 
# to see what it should be ,make a clean clone of the same project 
# in a different directory, checkout the master branch and run the 
# same command. That showed "branch.master.remote=origin", so... 

# then to fix: 
$ git config branch.master.remote origin 

उसके बाद, स्थानीय गुरु ट्रैकिंग था रिमोट/मूल/मास्टर फिर से। पीटर किसान को सुराग के लिए धन्यवाद जो मुझे यहाँ मिला!

# botched local clone: 
$ git config -l 
branch.master.remote=. 
branch.master.merge=refs/heads/master 
[...] 

# new/clean local clone: 
$ git config -l 
branch.master.remote=origin 
branch.master.merge=refs/heads/master 
[...] 

उम्मीद है कि मैं इस एक जवाब के रूप में यह स्वीकार करने के बिना पोस्ट कर सकते हैं (यदि नहीं मैं & हटाने होंगे एक टिप्पणी में रख:

+0

मेरा लक्ष्य निर्माण को सत्यापित करने के लिए धक्का देने से पहले दूरस्थ परिवर्तनों में विलय करना था। रिमोट मुझसे आगे निकल गया, लेकिन आपके 'गिट पुश मूल' सुझाव ने मुझे 'गिट पुल मूल' की कोशिश की, जिसके परिणामस्वरूप "आपने रिमोट 'मूल' से खींचने के लिए कहा, लेकिन शाखा को निर्दिष्ट नहीं किया। क्योंकि यह है आपकी वर्तमान शाखा के लिए डिफ़ॉल्ट कॉन्फ़िगर किए गए दूरस्थ नहीं, आपको कमांड लाइन पर एक शाखा निर्दिष्ट करनी होगी। " 'गिट पुल मूल मास्टर' ने कुछ सामान नीचे लाया, और 'गिट पुश मूल' ने मुझे "बी 1 एफ 6453..3b2d904 मास्टर -> मास्टर" दिया। रिमोट को फिर से सही तरीके से ट्रैक करने के लिए पुल/पुश कैसे प्राप्त करें? –

1

पीटर और निक की टिप्पणी से पर निम्नलिखित कुछ जांच कर रहा करने के लिए नेतृत्व या मूल प्रश्न)। हो रहा है ...

$ git config branch.master.remote origin 

... =origin करने के लिए branch.master.remote फिर से मिल गया है, लेकिन यह स्पष्ट नहीं होता है कि यह कैसे हो गया "ट्रैक न किए गए" पहली जगह में।

कोई सफाई से व्याख्या कर सकते हैं, तो:

क) कैसे अपने स्थानीय "असफल" रेपो ऐसी हालत में मेरे सवाल कार्यप्रवाह दिया में मिल गया है हो सकता है, और

ख) के लिए कार्रवाई की सही अनुक्रम सुरक्षित रूप से सिंक में वापस आ जाओ (यह देखते हुए कि रिमोट हेड इस बीच उन्नत हो सकता है), मैं इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करना चाहता हूं, क्योंकि मुझे लगता है कि यह इस स्थिति में दूसरों के लिए सबसे उपयोगी होगा।

+0

मेरे साथ ऐसा हुआ था, लेकिन मैं स्थानीय शाखाओं के अलावा कुछ भी मर्ज करने की कोशिश नहीं कर रहा था। यह जानना अच्छा होगा कि इस परिवर्तन का कारण क्या है। – awm

संबंधित मुद्दे