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


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.