दिलचस्प पोस्ट
@ सत्रसैक्ड बीन दायरे को खो देता है और हर समय पुन: निर्मित हो जाता है, फ़ील्ड शून्य हो जाते हैं जीसीडी, थ्रेड्स, प्रोग्राम फ्लो और यूआई अपडेटिंग अनन्त पृष्ठ स्क्रॉलिंग को सक्षम करने के लिए ViewPager बदल रहा है मैं बच निकलने वाली यूनिकोड के साथ स्ट्रिंग कैसे व्याख्या करूं? 'स्क्रिप्ट' टैग के लिए आवश्यक 'प्रकार' विशेषता है? Exec () का उपयोग करते समय कमांड प्रॉम्प्ट विंडो छुपाएं पैकेज प्रबंधक कंसोल सक्षम-माइग्रेशन CommandNotFoundException केवल एक विशिष्ट वी.एस. प्रोजेक्ट में बैश चर गुंजाइश अपरिवर्तनीय बनाम परिवर्तन योग्य प्रकार Android डिवाइस स्क्रीन सामग्री कैप्चर कैसे करें? URL से बाश स्क्रिप्ट निष्पादित करें दशमलव सटीक समायोजन, .net आप जावा में दिनांक कैसे घटाना चाहते हैं? छोटे रेटिंग बियर कैसे बना सकते हैं? जावास्क्रिप्ट में गतिशील (चर) स्ट्रिंग के रूप में regex पैटर्न का उपयोग करें

दिखा रहा है कि कौन से फ़ाइलें दो संशोधनों के बीच बदल गई हैं

मैं दो शाखाओं को एक साथ विलय करना चाहता हूं जो थोड़ी देर के लिए अलग हो गए हैं और जानना चाहते हैं कि किस फाइल को संशोधित किया गया है

इस लिंक पर आया: http://linux.yyz.us/git-howto.html जो काफी उपयोगी था।

जिन शाखाओं में मैं आया हूं उन्हें तुलना करने के लिए उपकरण हैं:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

क्या सोच रहा था कि "जीआईटी स्टेटस मास्टर … ब्रैंच" जैसी कोई चीज है जो केवल उन फाइलों को देखती है जो दोनों शाखाओं के बीच अलग हैं

एक नया उपकरण बनाने के बिना, मुझे लगता है कि यह सबसे करीबी है जो अब आप कर सकते हैं (यदि कोई फ़ाइल एक बार से अधिक संशोधित हो तो दोहराता दिखाई देगा):

  • git diff master..branch | grep "^diff"

क्या सोच रहा था कि मुझे कुछ याद आ गया है …

Solutions Collecting From Web of "दिखा रहा है कि कौन से फ़ाइलें दो संशोधनों के बीच बदल गई हैं"

प्रयत्न

 $ git diff --name-status master..branchName 

अगर आपको सही ढंग से समझें, तो आपको ऐसा करना चाहिए जो आपको चाहिए।

प्रयत्न

 $ git diff --stat --color master..branchName 

यह आपको प्रत्येक परिवर्तन के बारे में अधिक जानकारी देगा, जबकि अभी भी उसी पंक्ति की संख्या का उपयोग कर रहा है

आप अन्य तरीकों को मर्ज करने के लिए यदि अंतर की एक स्पष्ट तस्वीर प्राप्त करने के लिए शाखाएं भी फ्लिप कर सकते हैं:

 $ git diff --stat --color branchName..master 

यह भी ध्यान में रखें कि git में सस्ते और आसान शाखाएं हैं। अगर मुझे लगता है कि मर्ज समस्याग्रस्त हो सकता है तो मैं मर्ज के लिए एक शाखा बना सकता हूं। तो अगर master में परिवर्तन हो रहा है तो मैं मर्ज करना चाहता हूं और ba मेरी शाखा है जिसे मास्टर से कोड की आवश्यकता है, मैं निम्न कार्य कर सकता हूं:

 git checkout ba git checkout -b ba-merge git merge master .... review new code and fix conflicts.... git commit git checkout ba git merge ba-merge git branch -d ba-merge git merge master 

अंतिम परिणाम यह है कि मुझे अपनी शाखा के साथ पेंच करने से पहले फेंक-दूर शाखा पर मर्ज करने की कोशिश करनी पड़ी। अगर मैं अपना आत्म उलझू लेता हूं तो मैं सिर्फ ba-merge शाखा को हटा सकता हूं और शुरू कर सकता हूं।

अगर कोई दो शाखाओं से एक diff फ़ाइल उत्पन्न करने का प्रयास कर रहा है:

 git diff master..otherbranch > myDiffFile.diff 

ध्यान दें कि यदि आप नतीजे न पसंद करते हैं, तो git सिर्फ मर्ज को आज़माकर और किसी भी समस्याओं से पीछे हटाना आसान बनाता है। अग्रिम में संभावित समस्याओं की तलाश में यह आसान हो सकता है

एक GUI आधारित विधि भी है

आप gitk का उपयोग कर सकते हैं

  1. चलाएँ:

     $ gitk --all 
  2. किसी शाखा की प्रतिबद्धता पर राइट क्लिक करें और पॉप-अप मेनू में इस प्रतिबद्ध को चिह्नित करें चुनें।

  3. किसी अन्य शाखा के एक प्रतिबद्धता पर राइट क्लिक करें और डिफ यह चुनें -> चिह्नित प्रतिबद्ध या विभेदित प्रतिबद्ध -> यह

फिर दाएं नीचे की पैनल में एक बदली हुई फाइल सूची होगी और बाईं ओर पैनल में अंतर का विवरण होगा।

इस मामले में एक और विकल्प का उपयोग किया गया है:

 git difftool -d master otherbranch 

इससे न केवल फाइलों के बीच के अंतर को देखने की अनुमति मिलती है, बल्कि एक विशिष्ट फ़ाइल में इंगित करने और क्लिक करने का आसान तरीका भी प्रदान करता है।

सहयोगी, या कई सुविधाओं पर एक बार काम करते समय, यह आम बात है कि अपस्ट्रीम या यहां तक ​​कि आपके स्वामी में वह काम शामिल है जो आपकी शाखा में शामिल नहीं है, और मूल रूप से भिन्न diffs में दिखाई देगा।

यदि आपका अपस्ट्रीम स्थानांतरित हो सकता है, तो आपको यह करना चाहिए:

 git fetch git diff origin/master... 

बस git diff master का प्रयोग कर, प्रासंगिक परिवर्तनों को शामिल करने, या शामिल करने में विफल।

यदि आप इंटेलीज आईडीईए का उपयोग कर रहे हैं, तो आप अपनी वर्तमान कार्य शाखा के साथ किसी भी शाखा की तुलना भी कर सकते हैं। अधिक जानकारी के लिए http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 देखें। यह मुफ्त संस्करण में भी उपलब्ध है

और अगर आप केवल कुछ फाइल (फाइलों) में बदलाव की तलाश कर रहे हैं, तो:

 git diff branch1 branch2 -- myfile1.js myfile2.js 

शाखा 1 वैकल्पिक है और आपकी वर्तमान शाखा (जिस शाखा पर आप हैं) को डिफ़ॉल्ट रूप से माना जाएगा यदि शाखा 1 प्रदान नहीं की गई है। उदाहरण के लिए:

 git diff master -- controller/index.js 

जेसनस्मिथ के जवाब में अतिरिक्त जानकारी:

मैंने इस शाखा के साथ मेरी शाखा की जांच की:

$ git clone -b branchName http://repository_url

हालांकि, सुझाव दिया गया कि git diff कमांड विफल रहे:

 $ git diff --name-status master..branchName fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' 

इस धागे के बाद मैंने शाखाओं की जांच की:

 $ git branch * branchName $ git branch -a * branchName remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/branchName 

मेरे पास स्थानीय रूप से शाखा master नहीं था, इसलिए मैंने इसके बजाय remotes/origin/master खिलाफ तुलना की।

 $ git diff --name-status remotes/origin/master..push . . . . . . . . . 

इस धागे में remotes/origin/master पर अधिक जानकारी

यहां बहुत सारे उत्तर दिए गए हैं, लेकिन मैं ऐसा कुछ जोड़ना चाहता हूं जो मैं आमतौर पर उपयोग कर रहा हूं। यदि आप उन शाखाओं में से एक हैं जिनकी आप तुलना करना चाहते हैं, तो मैं आम तौर पर निम्न में से एक काम करता हूं। इस उत्तर के लिए हम कहेंगे कि हम हमारी माध्यमिक शाखा में हैं उस समय के आधार पर आपको जो दृश्य चाहिए, उसके आधार पर आप किस आधार पर चयन करेंगे, लेकिन अधिकांश समय मैं दो विकल्पों के दूसरे विकल्प का उपयोग कर रहा हूं। पहला विकल्प आसान हो सकता है यदि आप मूल प्रति पर वापस लौटने की कोशिश कर रहे हों – या तो दोनों, काम पूरा हो जाए!

यह मास्टर से उस शाखा की तुलना करेगा जो हम में हैं (जो माध्यमिक है) और मूल कोड जोड़ा लाइनें होंगे और नए कोड को निकाली गई लाइनों के रूप में माना जाएगा

 git diff ..master 

या

यह मास्टर से शाखा की तुलना करेगा जो हम में हैं (जो माध्यमिक है) और मूल कोड पुरानी लाइन होगी और नया कोड नई लाइन होगा

 git diff master.. 

दो शाखाएं कहती हैं

  • ए (जिस शाखा पर आप काम कर रहे हैं)
  • बी (एक और शाखा जिसके साथ आप तुलना करना चाहते हैं)

शाखा में होने पर आप टाइप कर सकते हैं

 git diff --color B 

तो यह आपको एक आउटपुट देगा

यहां छवि विवरण दर्ज करें

इस बारे में महत्वपूर्ण बिंदु है

  1. हरे रंग का पाठ शाखा ए में मौजूद है

  2. लाल रंग में पाठ शाखा बी में मौजूद है

उदाहरण के लिए, टोर्टोइजगिट उदाहरण के लिए आप आसानी से बदली गई फ़ाइलों के लिए शाखाओं की तुलना कर सकते हैं। बस ब्राउज़ संदर्भ पर क्लिक करें और उन शाखाओं को चुनें जिनकी तुलना आप करना चाहते हैं।

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

Remmber कि आप अलग-अलग परिणाम होगा अगर आप मास्टर से अपनी शाखा और अपनी शाखा के साथ तुलना करें