2012-05-27 11 views
7

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

मैं अपने काँटेदार परियोजना क्लोन:

git clone [email protected]:davidgiven/linux-allwinner.git 

के रूप में सिफारिश की है, मैं एक 'नदी के ऊपर' दूरस्थ कि इस परियोजना है कि मेरे एक से अलग है पटरियों जोड़ें:

git remote add upstream https://github.com/amery/linux-allwinner.git 

मैं इसे से ला नहीं:

git fetch upstream 

यह सब ठीक काम करता है। लेकिन, यह एक सप्ताह या उससे भी अधिक रहा है क्योंकि मैंने परियोजना को फोर्क किया था, और अपस्ट्रीम बदलाव कर रहा है। तो मैं उन परिवर्तनों को खींचना चाहता हूं। मैं सही शाखा --- Allwinner-v3.0-android-वी 2 में वर्तमान में कर रहा हूँ --- इसलिए मैं अपने शाखा में नदी के ऊपर से विलय:

git merge upstream/allwinner-v3.0-android-v2 

... और मुझे इस विलय के विरोध मिलता है।

CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby/common.h 
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby/Makefile 
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/standby.S 
CONFLICT (add/add): Merge conflict in arch/arm/mach-sun5i/pm/Makefile 
[etc] 

अब, मैं कुछ भी नहीं में देख लिया है; मैंने अभी तक काम शुरू नहीं किया है, और जब से मैंने इसे फोर्क किया है, तो मेरी परियोजना पूरी तरह से छूटी हुई है। इसलिए किसी भी संघर्ष के लिए यह संभव नहीं होना चाहिए। लेकिन कुछ हैं; क्या चल रहा है, और मैं इसे कैसे ठीक करूं?

अद्यतन:

git show-branch HEAD upstream/allwinner-v3.0-android-v2 कहने के लिए मैं का एक शब्द समझ में नहीं आता इस है, जो मेरे पास है दिखाता है:

! [HEAD] arm: sun3i: add getioaddr macro 
! [upstream/allwinner-v3.0-android-v2] arm: sun3i: updated irq handling and machine_desc to 3.0 
-- 
+ [upstream/allwinner-v3.0-android-v2] arm: sun3i: updated irq handling and machine_desc to 3.0 
+ [upstream/allwinner-v3.0-android-v2^] arm: sunxi: renable early_printk in all _defconfig except crane's 
+ [HEAD] arm: sun3i: add getioaddr macro 
+ [HEAD^] arm: sun3i: add dummy machine type 
+0

ऐसे मामले की तरह लगता है जहां आप विलय के बजाय रीबेज करना चाहते हैं। – ThiefMaster

+0

'गिट शो-शाखा हेड अपस्ट्रीम/ऑलविनर-वी 3.0-एंड्रॉइड-वी 2' कुछ दिलचस्प दिखा सकता है। – georgebrock

+0

क्या यह 'शो-शाखा' से पूरा आउटपुट है? मैं उम्मीद करता हूं कि यह एक लाइन के साथ समाप्त हो जाएगा जो '++ ' – georgebrock

उत्तर

11

यह हो सकता है, कि नदी के ऊपर फिर से लिखा गया है इतिहास (rebase, में संशोधन , ...) - उन्हें ऐसा नहीं करना चाहिए, लेकिन आप कभी नहीं जानते।

के बाद से आप कहते हैं कि आप किसी भी स्थानीय परिवर्तन की जरूरत नहीं है या करता है, तो आप अपने भंडार वापस एक साफ राज्य के लिए अपनी शाखा रीसेट करके लाना चाहिए:

git reset --hard upstream/allwinner-v3.0-android-v2 

(यह किसी भी स्थानीय परिवर्तनों को निरस्त कर देगा और वर्तमान प्रधान के प्रतिबद्ध नहीं पहुंचा जा सकता!)


ऊपर मानता है कि आप होगा (बल) अपने शाखा के नए रीसेट राज्य अपने रिमोट भंडार करने के लिए, धक्का अन्यथा आप संघर्ष फिर जब y का सामना करेंगे कहां origin से खींचने की कोशिश करें।

git push origin +allwinner-v3.0-android-v2 

आप पहले से ही अपने आप को स्थानीय स्तर पर की थी, तो आप rebase होगा (या चेरी पिकअप) नदी के ऊपर शाखा के शीर्ष पर अपने प्रतिबद्ध है, और फिर मूल करने के लिए एक धक्का है। इस तरह आप अपने स्थानीय इतिहास उसी तरह नदी के ऊपर किया था फिर से लिख सकते हैं और शीर्ष पर अपने परिवर्तन, यानी लागू होंगे:

git rebase --onto upstream/branch \ 
    last-original-upstream-commit-before-yours \ 
    your-branch 
+0

मैंने कोशिश की है। दुर्भाग्य से यह मदद नहीं करता है ... अब 'गिट पुश' विफल रहता है, मुझे बता रहा है कि मुझे पहले 'गिट पुल' की आवश्यकता है; लेकिन 'गिट पुल' उसी विलय त्रुटियों का उत्पादन करता है जो मैं पहले करता हूं। यह वास्तव में मैं क्या उम्मीद करता हूं; मेरी समझ यह है कि 'गिट रीसेट' मौजूदा शाखा को निर्दिष्ट एक में बदल देता है, इसलिए अब मेरे पास 'अपस्ट्रीम/ऑलविनर-वी 3.0-एंड्रॉइड-वी 2' की एक प्रतिलिपि है जिसे स्थानीय रूप से 'ऑलविनर-वी 3.0-एंड्रॉइड' के रूप में चेक किया गया है। -v2'। लेकिन चूंकि संघर्ष 'उत्पत्ति/...' और 'अपस्ट्रीम/...' के बीच हो रहे हैं, तो एकमात्र चीज जो बदलती है वह तब होती है जब संघर्ष होता है। –

+0

@ डेविडगिवेन: गिट पुश कहां? यह असफल हो जाएगा, क्योंकि आपका धक्का अब और तेजी से आगे नहीं है। आपने अपने प्रश्न में उल्लेख किया है कि आपने कुछ भी नहीं किया है, तो शायद एक भी मजबूर धक्का जाने का रास्ता है? – knittl

+0

'गिट पुश मूल ऑलविनर-v3.0-android-v2'। (जो, आकस्मिक रूप से, एक बेयर 'गिट पुश' के समान ही काम करता है।) टीबीएच, मैं जानना चाहता हूं कि यहां क्या हो रहा है; मेरे पास अभी तक कोई काम नहीं है, लेकिन मैं जल्द ही इस पर काम शुरू करना चाहता हूं, इसलिए अगर यह एक न्यूक-सब कुछ समाधान के बजाय फिर से होता है तो मुझे सामान्य समाधान की आवश्यकता होती है। –

2

show-branch उत्पादन का मतलब है कि upstream और HEAD प्रत्येक अपने आम पूर्वज के बाद से दो करता जोड़ लिया है (यह मानते हुए वह पूरा आउटपुट है)।(यह भी देखें: http://www.gitguys.com/topics/git-show-branch-to-see-branches-and-their-commits/) यदि आपने स्वयं कुछ भी नहीं किया है, तो इसका मतलब यह है कि अपस्ट्रीम ने एक rebase (या कुछ और जो इतिहास बदल दिया) धक्का दिया। चूंकि आपने कुछ भी नहीं किया है, इसलिए knittl का जवाब वही है जो आप चाहते हैं।

इसके लायक होने के लिए, मुझे इसके लिए git log --oneline --graph --decorate --remotes --branches भी पसंद है। आपको अपनी सभी शाखाओं और रिमोट्स के साथ एक ASCII ग्राफ मिलेगा, ताकि आप कल्पना कर सकें कि वहां क्या हुआ।

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