অন্য শাখার প্রতিশ্রুতিবদ্ধ অনুলিপি সহ কোনও ফাইলের বর্তমান কার্যকারী অনুলিপি


158

আমার fooমাস্টার শাখায় ফাইল সহ একটি রেপো আছে । আমি বার শাখায় স্যুইচ করেছি এবং এতে কিছু পরিবর্তন করেছি foo। আমি এখন git diffএই অনুলিপি (যা এখনও প্রতিশ্রুতিবদ্ধ না) এবং মাস্টার শাখার অনুলিপিটির মধ্যে কীভাবে চালাতে পারি ?

উত্তর:


151

নিম্নলিখিতটি আমার পক্ষে কাজ করে:

git diff master:foo foo

অতীতে, এটি হতে পারে:

git diff foo master:foo


9
প্রতিবার আমি সংক্রান্ত পুলিশের একজন উত্তর দেখার git diff, আমি সবসময় মনে stackoverflow.com/questions/5256249/git-diff-doesnt-show-enough/...
— VonC

@ ভনসি: ধন্যবাদ, এগুলি আঁকার উপযুক্ত ছিল তা জেনে ভাল লাগল :) ঘটনাচক্রে, আমি যে উত্তরটির সাথে আমার উত্তর আপডেট করেছিলাম তা কি বুঝতে পেরেছ?
— লংগায়ার

2
--পথ আর্গুমেন্ট থেকে পরামিতি আলাদা করার জন্য আপনি কি চেষ্টা করেছিলেন ? git diff -- master:foo foo
— ভনসি 16

1
1.8-তে, git diff -- master:foo fooকাজ করে না - এটি মনে হয় যে master:fooএটি একটি ফাইল-ইন-এ-ব্রাঞ্চের পরিবর্তে অস্তিত্বহীন ফাইল নাম (এবং এটি উপেক্ষা করে) হিসাবে আর্গটিকে আচরণ করবে treat শেষ 2 টি আরগস স্যুইচ করার চেষ্টা করুন - এটি যদি কাজ করে তবে ভিন্নতর তুলনাটি বিপরীত করা উচিত, তবে আউটপুট পরিবর্তন হয় না।
— কেলভিন

9
আমার জন্য এটি বিপরীত - আমি করতে পারি git diff master:foo fooতবে বিপরীত নয়। আমি তাও বুঝতে পারি না। 1.7.9.5 / উবুন্টু 12.04 সহ আমি কমপক্ষে আমি চাই যে ভিন্নতা git diff -R master:foo fooপেতে চাই তা পেতে পারি । আমি যখন এমএসজিজিট ১.৯.৪ / উইন্ডোজ x x64 এর সাথে চেষ্টা করি তখন আমি পাই fatal: unable to read 0000000000000000000000000000000000000000। -R1.7.9.5 গিটের সাথে আপনার মতো একই ত্রুটি বার্তাটি না পেয়ে তবে আমি পেয়েছি 1.9.4 এর সাথে fatal: master:foo: no such path in the working tree।
— জেএমএম

100

আপনি আপনার কার্যকারী গাছকে একটি নির্দিষ্ট শাখার নামের সাথে তুলনা করার চেষ্টা করছেন, তাই আপনি এটি চান:

git diff master -- foo

গিট-ডিফের এই ফর্মটি যা (গিট-ডিফ ম্যানপেজ দেখুন)

   git diff [--options] <commit> [--] [<path>...]
       This form is to view the changes you have in your working tree
       relative to the named <commit>. You can use HEAD to compare it with
       the latest commit, or a branch name to compare with the tip of a
       different branch.

এফওয়াইআই, আপনার কার্যকারী গাছের সমস্ত কিছুর চেয়ে আপনি কী মঞ্চস্থ করেছেন তার পার্থক্য দেখার জন্য একটি --cached(ওরফে --staged) বিকল্প রয়েছে:

   git diff [--options] --cached [<commit>] [--] [<path>...]
       This form is to view the changes you staged for the next commit
       relative to the named <commit>.
       ...
       --staged is a synonym of --cached.

2
ধন্যবাদ। কেন জানি না, তবে এই উত্তরটি আমার জন্য লিনাক্সের 1.8.1 গিট দিয়ে কাজ করেছিল।
— শ্রদ্ধা করছেন

চমৎকার আপনাকে ধন্যবাদ. আমি আমার বর্তমান শাখার নামটি ডিফ কমান্ডে অন্তর্ভুক্ত করতে চেয়েছি, তবে আমি দেখতে পাচ্ছি যে এটির প্রয়োজন নেই।
— yoyo

এটি কয়েক মাস আগে আমার জন্য কাজ করেছে, তবে এখনকার মতো মনে হচ্ছে না। বর্তমানে আমি গিট সংস্করণে 2.7.4 এ (অ্যাপল গিট -66); আমার আগে কী ছিল জানি না।
— এইচব্রেন্ট

@hBrent এটি এখনও আমার জন্য OSX 10.11 এ গিট 2.7.3 সহ কাজ করে। নির্দেশাবলী সহ একটি দ্রুত নমুনার রেপো যদি এটি সহায়ক হয় তবে: github.com/jordan-brough/git-diff-test
— জর্দান

ধন্যবাদ @ জর্দানব্রো।
— এইচব্রেন্ট

14

এছাড়াও: git diff master..feature foo

যেহেতু git diff foo master:fooআমার জন্য ডিরেক্টরিতে কাজ করে না।


আমিও না. এটা কি উইন্ডোজ জিনিস?
— স্কট স্টাফোর্ড

@ স্কট স্টাফর্ড আমি উবুন্টুতে আছি, সুতরাং না, এটি কোনও উইন্ডোজ জিনিস বলে মনে হয় না।
— আর্টবিআইটি

আমার পক্ষে যতক্ষণ কাজ আমি স্পষ্টভাবে উভয় শাখার নাম (উইন্ডোজ) git diff branch1:foo master:foo
— দিই ততক্ষণ কাজ করে

12
git difftool tag/branch filename

এটি একটিমাত্র উত্তর যা আমার পক্ষে কোনও ফাইলের স্থানীয় ওয়ার্কিং অনুলিপি এবং দূরবর্তী রেপোতে (ফাইলের "উত্স" নয়) এর মধ্যে তুলনার জন্য কাজ করেছিল। ধন্যবাদ, আদির এবং বাজ
— মাউস

git difftoolgit-scm.com/docs/git-difftool-v ডক্স অনুসারে কোনও বিকল্প নেই । মানে ? -y
— ks1322

10
git diff mybranch master -- file

কাজ করা উচিত


4
এটি কেবল মাইব্র্যাঙ্কে প্রতিশ্রুতিবদ্ধ ফাইলগুলির জন্য কাজ করে, ফাইলের বর্তমান ওয়ার্কিং কপি নয়।
— yoyo

উপরে "-" এর অর্থ কী
— পুশপারাজ

এটি উভয় দিকের সাথে তুলনা করতে দেয়: git diff deployment master -- fileএবং কোনও 2 টি শাখার সাথেgit diff master deployment -- file প্রত্যাশা অনুযায়ী কাজ করছে ।
— ভিক্টরখো

0

স্থানীয় পরিবর্তনগুলি দেখতে আপনার বর্তমান শাখার সাথে তুলনা করুন

git diff .

স্থানীয় পরিবর্তিত দেখতে অন্য যে কোনও বিদ্যমান শাখার সাথে তুলনা করুন

git diff <branch-name> .

একটি নির্দিষ্ট ফাইলের পরিবর্তনগুলি দেখতে

git diff <branch-name> -- <file-path>

আপনি git fetchশুরুতে চালাচ্ছেন তা নিশ্চিত করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.