বর্তমান এবং শেষ সংস্করণের মধ্যে পার্থক্য সন্ধান করা


670

গিট ব্যবহার করে আপনি কীভাবে বর্তমান এবং শেষ সংস্করণের মধ্যে পার্থক্য খুঁজে পেতে পারেন?

git diff last version:HEAD

1
আপনি যদি আপনার রেপোর মেঘের অবস্থানের জন্য গিটহাব ব্যবহার করেন তবে এটি খুব সহজ: আপনার প্রকল্পে নেভিগেট করুন এবং সারণীতে "কমিটস" শিরোনামটি ক্লিক করুন যা আপনার প্রকল্পটি প্রদর্শন করে
ডেভিড লন্ডকুইস্ট

1
"বর্তমান এবং শেষ সংস্করণ" এর অর্থটি আসলে প্রশ্নে স্পষ্ট করা উচিত।
অবাস্তব

উত্তর:


1170

আমি আসলে "শেষ সংস্করণ" এর অর্থ বুঝতে পারি না।

পূর্বের প্রতিশ্রুতি যেমন শিরোনাম with এর মাধ্যমে অ্যাক্সেস করা যায়, আমি মনে করি যে আপনি এর মতো কিছু সন্ধান করছেন:

git diff HEAD^ HEAD

গিট ১.৮.৫ অনুসারে @এটি একটি উপনাম HEAD, সুতরাং আপনি এটি ব্যবহার করতে পারেন:

git diff @~..@

নিম্নলিখিতগুলিও কাজ করবে:

git show

আপনি যদি মাথা এবং কোনও কমিটের মধ্যে পার্থক্য জানতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

git diff commit_id HEAD

এবং এটি আপনার ভিজ্যুয়াল ডিফ সরঞ্জামটি চালু করবে (যদি কনফিগার করা থাকে):

git difftool HEAD^ HEAD

যেহেতু হেডের সাথে তুলনা ডিফল্ট হয় আপনি এটিকে বাদ দিতে পারেন ( ওরিয়েন্ট দ্বারা চিহ্নিত হিসাবে ):

git diff @^
git diff HEAD^
git diff commit_id

সতর্কবাণী

  • @ স্কটএফ এবং @ পানজারক্রিসিস মন্তব্যগুলিতে ব্যাখ্যা করেছেন যে উইন্ডোজের ~পরিবর্তে উইন্ডোজের চরিত্রটি ব্যবহার করা উচিত ^

আমি এর আগে প্রতিশ্রুতিবদ্ধ সংস্করণ এবং সংস্করণের মতো কিছু চাইছিলাম ... গিফ ডিফার হেড -1
রাজীব

7
গিট ১.৮.৫ অনুসারে @এটি একটি উপনাম HEAD। এবং যেহেতু ~এবং ^একই হয় যখন কেবল কোনও প্রতিশ্রুতি ফিরে যায়, আমি git diff @~..@টাইপ করতে অনেক সহজ মনে করি।
অ্যান্ড্রু

80
ডিফল্ট জিনিসটি দেখানোর জন্য git showযেহেতু অ্যান্ড্রু এখনও তত সহজ @~..@
অমলয়

3
git showকেবল প্রতিশ্রুতিবদ্ধ বার্তাটি মুদ্রণ করে, এটি নির্দিষ্ট পরিবর্তনগুলির ভিন্নতা আউটপুট দেয় না, কমপক্ষে গিট 2.5.4 (অ্যাপল গিট-61) এ, সুতরাং এটি আসলে ওপি-র প্রশ্নের উত্তর হতে পারে না।
ব্যবহারকারী 1944491

1
সমস্যাটি git showহ'ল যদি HEADমার্জ কমিট হয় তবে আপনি যা প্রত্যাশা করেন তা পাবেন না যেহেতু মার্জ কমিট নিজেই কোনও পরিবর্তন হতে পারে না। git diff HEAD^ HEADসংস্করণগুলির মধ্যে আসল পরিবর্তনগুলি দেখাবে
রুবেনলগুনা

158

"বর্তমান সংস্করণ" ধরে নেওয়া হল কার্যনির্বাহী ডিরেক্টরি (নিঃশর্ত পরিবর্তন) এবং "শেষ সংস্করণ" হ'ল HEAD(বর্তমান শাখার জন্য সর্বশেষ প্রতিশ্রুতিবদ্ধ পরিবর্তন), কেবলমাত্র করুন

git diff HEAD

নিম্নলিখিতগুলির জন্য ক্রেডিট ব্যবহারকারীর কাছে যায় Cerran

এবং আপনি -aযখন প্রতিশ্রুতিবদ্ধ তখন আপনি যদি মঞ্চের অঞ্চলটি সর্বদা এড়িয়ে যান , তবে আপনি কেবল ব্যবহার করতে পারেন git diff

সারসংক্ষেপ

  1. git diff অপরিবর্তিত পরিবর্তনগুলি দেখায়।
  2. git diff --cached মঞ্চ পরিবর্তনগুলি দেখায়।
  3. git diff HEAD সমস্ত পরিবর্তন দেখায় (উভয় পর্যায়ের এবং স্টেস্টেড না))

উত্স: গিট-ডিফ (1) ম্যানুয়াল পৃষ্ঠা - সেরান


16
এবং আপনি -aযখন প্রতিশ্রুতিবদ্ধ তখন আপনি যদি মঞ্চের অঞ্চলটি সর্বদা এড়িয়ে যান , তবে আপনি কেবল ব্যবহার করতে পারেন git diff। <1> অচিহ্নবদ্ধ পরিবর্তনগুলি git diffদেখায় । <2> মঞ্চস্থ পরিবর্তনগুলি দেখায় । <3> সমস্ত পরিবর্তন (উভয় পর্যায়ের এবং স্টেস্টেড) দেখায় । উত্স: গিট-git diff --cachedgit diff HEAD
ডিফ

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি প্রশ্নের উদ্দেশ্যকে উত্তর দেয়।
tgoneil

গিটটিতে "বর্তমান অস্টেজড সংস্করণ" এর নাম কী? আসলে কোন নাম আছে?
ম্যাথিউ CAROFF

118

হচ্ছে একটি উপর নির্দিষ্ট মন্তব্য দ্বারা amalloy , যদি "বর্তমান এবং গত সংস্করণ" দ্বারা আপনি কি বোঝাতে চেয়েছেন গত কমিট এবং যে সামনে কমিট, আপনি ব্যবহার কেবল পারা

git show

5
এই আমি খুঁজছিলাম ছিল। দুর্দান্ত উত্তর।
কোডমানিয়াক

12
ব্যবহার করুন git show HEAD~1দেখানোর জন্য শেষ কিন্তু এক কমিট, এবং git show HEAD~2বয়স্ক করে জন্য ইত্যাদি। এর মাধ্যমে কেবল একটি একক ফাইল দেখান git show HEAD~2 my_file
ফ্লোরিয়ান ব্রুকার

60

শেষ কিন্তু একটি প্রতিশ্রুতিবদ্ধ এবং শেষ প্রতিশ্রুতি (প্লাস বর্তমান অবস্থা, যদি থাকে তবে) এর মধ্যে পার্থক্য:

git diff HEAD~

বা এমনকি (টাইপ করা সহজ)

git diff @~

বর্তমান শাখার @প্রতিশব্দ কোথায় HEADএবং এর ~অর্থ "আমাকে উল্লিখিত সংশোধনের পিতামাতা দিন"।


আমি বেশ পছন্দ করি git diff HEAD^(সমমানের HEAD~ফর্মের চেয়ে )। নিজের মতো "পুরানো গিট" এর জন্য স্মরণ করা এখন আরও সহজ ;-)
sxc731

3
গাজর কিছু টার্মিনালের একটি সমস্যা। বিকল্পটি
পেয়ে ভাল লাগলো

1
উত্তরটি কী ~এবং এর @অর্থ ব্যাখ্যা করে উন্নত করা যেতে পারে ।
বব স্টেইন

1
যদি আমরা কেবল শেষ প্রতিশ্রুতিতে প্রতিশ্রুতিবদ্ধ তা পরীক্ষা করতে চাই তবে এটি ব্যবহার করবেন না (কারণ নোংরা পরিবর্তনগুলি ডিফকে প্রভাবিত করে)। একটি সংক্ষিপ্ত বাক্য গঠন সত্য diff HEAD^ HEADহওয়া উচিত git diff @^!Git-scm.com/docs/gitrevisions দেখুন জন্যr1^!
জনি ওয়াং

@ জোহনিওয়ং স্পষ্ট করার জন্য আপনাকে ধন্যবাদ। আমি "বর্তমান অবস্থা" উল্লেখ করেছি পাঠকদের বিভ্রান্ত না করার জন্য।
টমিলভ আনাতোলি

53

আপনি এটি এভাবেও করতে পারেন:

আগের কমিটের সাথে তুলনা করুন

git diff --name-status HEAD~1..HEAD

বর্তমান এবং পূর্ববর্তী দুটি কমিটের সাথে তুলনা করুন

git diff --name-status HEAD~2..HEAD

16

cachedআপনি যুক্ত করলে কেবল পতাকাটি ব্যবহার করুন , তবে এখনও প্রতিশ্রুতিবদ্ধ না:

git diff --cached --color

1
আমি যখন এই প্রশ্নটি পেয়েছিলাম ঠিক তখনই আমি এটির সন্ধান করছিলাম। ধন্যবাদ!
উইলিয়াম রজার্স

7

আপনি ওস্তাদে রয়েছেন তা ধরে নিয়ে দ্রুত এবং সহজ:

    git diff (checkout_id):file.txt file.txt

উদাহরণ:

    git diff asdfioei91819280din198:file.txt file.txt

4

প্রথমত, ব্যবহার করুন "git log সংগ্রহস্থলের জন্য লগগুলির তালিকা " ব্যবহার করুন।

এখন দুটি কমিটের সাথে সম্পর্কিত দুটি কমিট আইডি নির্বাচন করুন। আপনি পার্থক্যগুলি দেখতে চান ( উদাহরণস্বরূপ - সর্বাধিক প্রতিশ্রুতিবদ্ধ এবং কিছু পুরানো প্রতিশ্রুতি (আপনার বর্তমান সংস্করণ এবং কিছু পুরানো সংস্করণের প্রত্যাশা অনুযায়ী) )।

এরপরে, ব্যবহার করুন:

git diff <commit_id1> <commit_id2>

অথবা

git difftool <commit_id1> <commit_id2>

3

যদি শীর্ষ প্রতিশ্রুতিটি হেড দ্বারা নির্দেশিত হয় তবে আপনি এর মতো কিছু করতে পারেন:

commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2

প্রথম এবং দ্বিতীয় অঙ্গীকারের মধ্যে পার্থক্য:

git diff HEAD~1 HEAD

প্রথম এবং তৃতীয় অঙ্গীকারের মধ্যে পার্থক্য:

git diff HEAD~2 HEAD

দ্বিতীয় এবং তৃতীয় অঙ্গীকারের মধ্যে পার্থক্য:

git diff HEAD~2 HEAD~1

এবং আরও ...


2

আমি ব্যবহার Bitbucket সঙ্গে অন্ধকার অন্ধকার সঙ্গে আইডিই EGit প্লাগইন ইনস্টল হয়।

আমি এর ইতিহাসের যে কোনও সংস্করণ ( এসভিএন এর মতো) থেকে কোনও ফাইল তুলনা করি ) ।

মেনু প্রকল্প এক্সপ্লোরার → ফাইল → ডান ক্লিক → টিমইতিহাস দেখান

এটি সেই ফাইলের সমস্ত পরিবর্তনের ইতিহাস নিয়ে আসবে। এখন Ctrlক্লিক করুন এবং যে কোনও দুটি সংস্করণ নির্বাচন করুন → "একে অপরের সাথে তুলনা করুন"


2

এটি ট্যাগগুলির জন্যও কাজ করবে (নীচে 'ইউনিক' অপসারণ করুন এবং অন্যান্য অংশগুলি যদি আপনাকে দেখতে প্রয়োজন হয় তবে):

 git diff v1.58 HEAD 

নীচে একই, এবং এটি একক একক সংগ্রহস্থলটিতে মাইক্রোসার্চেসিসের জন্য অবিচ্ছিন্ন একীকরণ (সিআই) জন্য কার্যকর হতে পারে :

git diff v1.58 HEAD  --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name> 

(ক্রেডিট - https://dzone.com/articles/build-test-and-deploy-apps-ind dependantly- from- a- mo )

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