গিট কমিটের পরিবর্তনগুলি কীভাবে দেখবেন?


1545

যখন আমি git diff COMMITসেই প্রতিশ্রুতি এবং শিরোনাম (যতদূর আমি জানি) এর মধ্যে পরিবর্তনগুলি দেখতে পাই, তবে আমি সেই একক প্রতিশ্রুতি দ্বারা পরিবর্তনগুলি দেখতে চাই।

আমি কোনও স্পষ্ট বিকল্প খুঁজে পাইনি diff/ logযা আমাকে সেই আউটপুট দেবে।


উত্তর:


1969

একটি নির্দিষ্ট COMMITহ্যাশের জন্য পার্থক্যটি দেখতে :

git diff COMMIT~ COMMITযে COMMITপূর্বপুরুষ এবং এর মধ্যে পার্থক্য আপনাকে দেখায় COMMITস্বীকৃতি এবং এর বন্ধুদের সম্পর্কে কমান্ড এবং গিটরিভিশন সম্পর্কে বিশদ জানতে গিট ডিফের জন্য ম্যান পেজগুলি দেখুন ~

বিকল্পভাবে, git show COMMITখুব অনুরূপ কিছু করবে। (কমিটের ডেটা, এর পৃথক সহ - তবে মার্জ কমিটের জন্য নয়)) গিট শো মানচিত্রটি দেখুন


17
নোট করুন যে ^থমসন এবং বোর্ন শেলস ( |সেখানে সমার্থক শব্দ ) rcএবং এর ডেরিভেটিভস (ক্যারেট অপারেটর) এবং zshএক্সটেনডগ্লোব সক্ষম ( notগ্লোব্বিং অপারেটর) এর সাথে উদ্ধৃতি দেওয়ার প্রয়োজন
স্টিফেন চেজেলাস

3
দ্রষ্টব্য যে HEAD^প্রতিশ্রুতিবদ্ধর একাধিক পিতা-মাতার ক্ষেত্রে অর্থাত্ প্রথম পিতামাতাকে বোঝায় (অর্থাত্ মার্জ কমিট)।
মনসুর

23
git diff COMMIT~ COMMITআমার জন্য কাজ করে, ক্যারেটের পরিবর্তে টিল্ডটি লক্ষ্য করুন। আমি উইন্ডোজ 10 এ গিট সংস্করণ 2.6.1.windows.1 চালাচ্ছি
জুলু ওহটনেন

14
@ ট্র্যাডেট্রি: কমিট শব্দটি কিছু কমিটের নাম, যেমন SHA যোগফলের সাথে প্রতিস্থাপিত হওয়ার কথা।
নিক মাত্তিও

91
আমি মনে করি এই প্রশ্নের জন্য গিট শো আরও উপযুক্ত এবং এটি প্রথমে উল্লিখিত পরামর্শ হওয়া উচিত।
পাইপম্যানেটজিজ

496

" এর পিতামাতার সাথে গিট কমিটের বিভিন্নতার জন্য শর্টহ্যান্ড? " তে উল্লিখিত হিসাবে আপনি এগুলি ব্যবহার করতে পারেন git diff:

git diff COMMIT^!

অথবা

git diff-tree -p COMMIT

গিট শো সহ, আপনাকে (একা একা আলাদা করার জন্য মনোযোগ দেওয়ার জন্য) প্রয়োজন হবে:

git show --color --pretty=format:%b $COMMIT

COMMITপ্যারামিটারটি হয় কমিট পর :

একটি প্রতিশ্রুতিবদ্ধ বস্তু বা এমন একটি বস্তু যা প্রতিশ্রুতিবদ্ধভাবে একটি প্রতিশ্রুতিবদ্ধ বস্তুর প্রতি শ্রদ্ধার সাথে সম্পর্কিত হতে পারে। নিম্নলিখিতটি সমস্ত কমিট-ইশগুলি হ'ল: কমিট অবজেক্ট, একটি ট্যাগ অবজেক্ট যা প্রতিশ্রুতিবদ্ধ বস্তুকে নির্দেশ করে, একটি ট্যাগ অবজেক্ট যা কোনও ট্যাগ অবজেক্টকে নির্দেশ করে যে কমিট অবজেক্টকে নির্দেশ করে, ইত্যাদি।

কমিট-ইশ উল্লেখ করার জন্য গিটরিভিশন "স্পেসিফাইং রিভিশনস" দেখুন ।
" গিটে ট্রি-ইশ মানে কি? " এও দেখুন ।


369

আপনি এই সহজ পদ্ধতিতেও চেষ্টা করতে পারেন:

git show <COMMIT>

2
দেখে মনে হচ্ছে এটি বেশ আলাদা কিছু করে
খের পরিবর্তনশীল

3
এটি কেবল প্রতিশ্রুতি বার্তা প্রদর্শন করে। এই কমিটের জন্য প্রয়োগ করা কোডের পরিবর্তনের চেয়ে আলাদা নয়।
k0pernikus

1
হ্যাঁ এটা করে? সর্বশেষে গিট সংস্করণে সর্বশেষে ...
ডেভি

2
এটি আপডেট হওয়া সঠিক উত্তর হওয়া উচিত
স্কট স্কাইলস

1
এই উত্তর হওয়া উচিত।
রোল

77

git show সাম্প্রতিক প্রতিশ্রুতিবদ্ধ হওয়া পরিবর্তনগুলি দেখায়।

সমান git show HEAD

git show HEAD~1 আপনাকে 1 টি কমিট ফিরিয়ে নিয়ে যায়


45

আমি সাধারণত:

git diff HEAD~1

শেষ প্রতিশ্রুতি সম্পর্কিত পরিবর্তনগুলি দেখানো। আপনার যদি আরও কমিট থাকে তবে কেবলমাত্র 1 টি সংখ্যাটি বাড়িয়ে তুলুন যে আপনি দেখতে চান কতটি কমিট আলাদা।


34

প্রথমে কমিট আইডি ব্যবহার করে,

git log #to list all

অথবা

git log -p -1 #last one commit id

কমিট আইডি কপি করুন।

একটি নির্দিষ্ট অঙ্গীকার থেকে পরিবর্তনগুলি তালিকাভুক্ত করার জন্য এখন আমরা দুটি পদ্ধতি ব্যবহার করি,

পদ্ধতি 1:

git diff commit_id^! #commit id something like this 1c6a6000asad012

পদ্ধতি 2:

git show commit_id
For example: git show 1c6a600a

2
কী ^!মানে ??
মার্টন কল 18

2
^! কমিটমেন্টের শর্টহ্যান্ড হ'ল .. কমিট মানে যার অর্থ সমস্ত পিতামাতাকে বাদ দেবে এবং সেই প্রতিশ্রুতিতে
ভিন্নতা

আমি বিশেষজ্ঞ নই তবে আমার একটি মামলা রয়েছে (একাধিক শাখা জড়িত রয়েছে) যেখানে গিট লগ সি ^! গিট লগ সি exactly .. সি এর মতো নয়। প্রকৃতপক্ষে এটি আরও ভাল: গিট লগ সি c .. সি গিট লগ সি while থাকাকালীন অনেকগুলি এন্ট্রি তালিকাভুক্ত করেছে! সঠিক কাজটি করেছে, সুতরাং এটিই আমি দীর্ঘদিনের জন্য
খুঁজছিলাম

32
git show <commit_sha>

এটি আপনাকে যে প্রতিশ্রুতিবদ্ধ তা ঠিক দেখাবে। আমি মনে করি আপনি দুটি কমিট শের মধ্যে একটি স্থান রেখে আপনি এটি একটি পরিসীমা করতে পারেন।

git show <beginning_sha> <ending_sha>

আপনি প্রায়শই প্রত্যাবর্তন করতে পারলে এটি বেশ সহায়ক, কারণ আপনার বৈশিষ্ট্য লগগুলি সমস্ত এক সারি থাকবে।


25

গিট-ডিফ (1) এর জন্য ম্যান পৃষ্ঠা থেকে :

git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>

মাঝখানে তৃতীয়টি ব্যবহার করুন:

git diff [options] <parent-commit> <commit>

এছাড়াও একই ম্যান পৃষ্ঠা থেকে, নীচে, উদাহরণ বিভাগে :

$ git diff HEAD^ HEAD      <3>

শেষ প্রতিশ্রুতি এবং শেষ প্রতিশ্রুতি দেওয়ার আগে সংস্করণটির সাথে তুলনা করুন।

স্বীকারযোগ্যভাবে এটি কিছু বিভ্রান্তিকরভাবে শব্দযুক্ত, এটি কম বিভ্রান্তিকর হবে

এর আগে প্রতিশ্রুতিবদ্ধতার সাথে সাম্প্রতিকতম প্রতিশ্রুতি তুলনা করুন।


3
আপনার পুনর্নির্মাণ প্রয়োগ করা হবে git diff HEAD HEAD^
রিচার্ড

গিট ডিফ হেড ^ হেড কোনও পরিবর্তন প্রদর্শন করে না।
ব্যবহারকারী 3690202

@ user3690202 যাতে বোঝা যায় যে প্রদর্শিত কোনও পরিবর্তন নেই। আসলে কি তাই?

কীভাবে কোনও পরিবর্তন দেখা যাবে না? আপনি যদি শেষ প্রতিশ্রুতিটি দেখতে চান তবে অবশ্যই এটি সম্পূর্ণ নতুন সংগ্রহস্থল না হলে প্রদর্শিত হবে কিছু পরিবর্তন?
ব্যবহারকারী 3690202

@ ব্যবহারকারী 3690202 গিটের সাথে একটি "খালি প্রতিশ্রুতিবদ্ধ" তৈরি করা সম্ভব যা বাস্তবে পিতামাতার কোনও পরিবর্তন নেই, যদিও একটি বিল্ট-ইন সেফগার্ড রয়েছে যা এটি পরীক্ষা করে এবং এটি প্রতিরোধ করে, যদিও এটি একটি কমান্ড লাইন বিকল্পের সাহায্যে অতিক্রমযোগ্য। আমি সন্দেহ করি যে আপনি ইচ্ছাকৃতভাবে একটি খালি প্রতিশ্রুতি তৈরি করবেন, সুতরাং অন্য একটি সম্ভাবনা হ'ল আপনার কোনওরকম প্রাক-কমিট লাইন-এন্ডিং রূপান্তর আছে (বা অন্যান্য মজার সাদা স্থান) যা গিটকে এই ভেবে ভ্রষ্ট করছে যে আসলে কোনও পরিবর্তন হয়নি। আপনি কোন প্ল্যাটফর্মটি গিট চালাচ্ছেন?

22

নিম্নলিখিতটি কাজটি করে বলে মনে হচ্ছে; একত্রীকরণের মাধ্যমে কী নিয়ে এসেছে তা দেখানোর জন্য আমি এটি ব্যবহার করি use

git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>

এটা কি সাথে কাজ করবে git log? (কারণ stackoverflow.com/a/18585297/6309 )
VonC

16

আরেকটি সম্ভাবনা:

git log -p COMMIT -1

1
@ গ্রান্টম্যাকিলিয়ান হ্যাঁ, এবং এটি ইতিমধ্যে সর্বোচ্চ উত্তোলিত উত্তরে রয়েছে, তাই আমি এটি উল্লেখ করি না।
জন_ ওয়েস্ট

11

আপনি git diff HEAD HEAD^1পিতামাতার প্রতিশ্রুতি দিয়ে পৃথক দেখতে ব্যবহার করতে পারেন।

আপনি যদি কেবলমাত্র ফাইলগুলির তালিকা দেখতে চান তবে --statবিকল্পটি যুক্ত করুন।


এটি আপনার অর্থ, গিট ডিফার্ট হেড ^ 1 হেড
শিবির বাসাক

মনে রাখবেন যে এটি সরানো হিসাবে আপনি কী যুক্ত করেছেন তা প্রদর্শন করবে, কারণ এটি বিপরীত তুলনা করবে। আপনি পড়া উচিত diffকমান্ড: কি আমি ফাইলে পরিবর্তন করতে হবে কমিট থেকে পেতে হবে HEADকমিট HEAD^1?
ব্রেইনপ্লট

9
git difftool COMMIT^ <commit hash>

আপনি যদি আপনার ডিফ্টলটি কনফিগার করে থাকেন তবে তাও সম্ভব।

এখানে দেখুন কিভাবে কনফিগার difftool অথবা ম্যানুয়েল পৃষ্ঠা এখানে

অতিরিক্ত হিসাবে আপনি git diff-tree --no-commit-id --name-only -r <commit hash>কোন কমিট হ্যাশটিতে কোন ফাইলগুলি পরিবর্তন / প্রতিশ্রুতিবদ্ধ তা দেখতে ব্যবহার করতে পারেন


9

আমি একটি নির্দিষ্ট প্রতিশ্রুতি এবং এর শেষ প্রতিশ্রুতি তুলনা করতে নীচের আদেশটি পছন্দ করি:

git diff <commit-hash>^-

উদাহরণ:

git diff cd1b3f485^-

6

প্রতিশ্রুতিবদ্ধ ব্যবহার দ্বারা লেখক এবং সময় দেখতে git show COMMIT। যার ফলশ্রুতিতে এরকম কিছু ঘটবে:

commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date:   Fri Jul 24 17:46:42 2015 -0700

     Merge remote-tracking branch 'origin/your-feature'

আপনি যদি দেখতে চান যে কোন ফাইলগুলি পরিবর্তন করা হয়েছিল, উপরের মার্জ লাইন থেকে মানগুলি সহ নিম্নলিখিতটি চালান git diff --stat a2a2894 3a1ba8f

আপনি যদি আসল ভিন্নতা দেখতে চান তবে চালান git --stat a2a2894 3a1ba8f


"আপনি যদি আসল ভিন্নতা দেখতে চান তবে চালান git --stat a2a2894 3a1ba8f"। আমি মনে করি আপনি git diff a2a2894 3a1ba8fঅন্যথায় বোঝাতে চাইছেন unknown option: --stat
ফল

5

সম্পূর্ণ পরিবর্তনগুলি পরীক্ষা করার জন্য:

  git diff <commit_Id_1> <commit_Id_2>

শুধুমাত্র পরিবর্তিত / যুক্ত / মুছে ফেলা ফাইলগুলি পরীক্ষা করার জন্য:

  git diff <commit_Id_1> <commit_Id_2> --name-only

দ্রষ্টব্য : এর মধ্যে প্রতিশ্রুতি ব্যতীত ভিন্নতা যাচাই করার জন্য আপনাকে কমিট আইডির দরকার নেই।


4

আমি উইন্ডোজ 10 এ গিট সংস্করণ 2.6.1.windows.1 চালাচ্ছি, সুতরাং আমার নেভিকের উত্তরে (ক্যারেটের পরিবর্তে টিল্ড) সামান্য পরিবর্তন প্রয়োজন:

git diff COMMIT~ COMMIT

আর একটি বিকল্প ক্যারেটের উদ্ধৃতি দেওয়া:

git diff "COMMIT^" COMMIT

3

এই আদেশটি আপনাকে গিট পিতামাতাদের প্রতিশ্রুতিবদ্ধ হ্যাশ দেবে:

git log -n 2 <commit-hash>

তারপর git diff-tool <commit-hash> <parent-commit-hash>

উদাহরণ:

bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3

commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 13:17:07 2016 +0530

CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.

commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date:   Mon Jul 25 11:28:09 2016 +0530

The ratio of the height to width of the channel images are maintained.

এর পরে

git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f

2

আপনি যদি সর্বশেষ প্রতিশ্রুতিগুলির পরিবর্তনগুলি দেখতে চান তবে কেবল git showআপনাকে তা দেবে।


1

গ্রাফিকাল ভিউতে উত্স পরিবর্তনটি পরীক্ষা করার ক্ষেত্রে,

$gitk (Mention your commit id here)

উদাহরণ স্বরূপ:

$gitk HEAD~1 

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