কমিট করার আগে গিটে ফাইল কীভাবে পৃথক দেখা যায়


443

এটি প্রায়শই আমার সাথে ঘটে:

আমি এক বা দু'দিন ধরে একই সময়ে দু'একটি সম্পর্কিত পরিবর্তন নিয়ে কাজ করছি এবং যখন প্রতিশ্রুতি দেওয়ার সময়টি আসে তখন আমি একটি নির্দিষ্ট ফাইলে কী পরিবর্তন হয়েছিল তা ভুলে গিয়ে শেষ করি। (এটি কেবল একটি ব্যক্তিগত গিট রেপো, সুতরাং একটি প্রতিশ্রুতিতে একাধিক আপডেট আসার সাথে আমি ঠিক আছি))

আমার স্থানীয় ফাইল, যা চেক ইন হতে চলেছে এবং সেই ফাইলটির জন্য শেষ প্রতিশ্রুতিবদ্ধতার মধ্যে পরিবর্তনগুলির পূর্বরূপ দেখার কোনও উপায় আছে কি?

কিছুটা এইরকম:

git diff --changed /myfile.txt

এবং এটি এমন কিছু মুদ্রণ করবে:

line 23
  (last commit): var = 2+2
  (current):     var = myfunction() + 2

line 149
  (last commit): return var
  (current):     return var / 7

এই ফাইলটি, সর্বশেষে চেক ইন হওয়ার পরে, আমি দ্রুত এই ফাইলটিতে কী করতে পারি তা দেখতে পেলাম।

উত্তর:


732

আপনি যদি git addএখনও সম্পাদনা করেননি তা যদি দেখতে চান :

git diff myfile.txt

বা যদি আপনি ইতিমধ্যে যুক্ত পরিবর্তনগুলি দেখতে চান

git diff --cached myfile.txt

20
চেক আউট git add -p। প্রতিটি পরিবর্তন পর্যালোচনা করুন, নির্বাচিতভাবে পর্যায়ক্রমে পরিবর্তনগুলি অনুমোদন করুন, আপনি যদি নিজের মন পরিবর্তন করেন তবে যে কোনও সময় বাতিল করুন এবং এমনকি কোনও খণ্ড সম্পাদনা করুন। আমি git addএটি ছাড়া কখনও না।
কাইল বেকার

2
আপনি কিভাবে ফাইলটি প্রস্থান করতে পারেন?
কিক বাট্টোস্কি

3
@ কিক টিপুন চেষ্টা করুনq
wjandrea

এছাড়াও, আপনি যদি ভিন্নতার ফলে নির্বোধ 'a /' এবং 'b /' উপসর্গগুলি মুছতে চান, আপনি সেট করতে পারেন git config --global diff.noprefix true
লিয়াং

64
git diff HEAD file

শেষ প্রতিশ্রুতি থেকে আপনি আপনাকে আপনার ওয়ার্কট্রিতে যুক্ত পরিবর্তনগুলি দেখিয়ে দেবেন। সমস্ত পরিবর্তন (মঞ্চযুক্ত বা মঞ্চস্থ নয়) প্রদর্শিত হবে।


1
আপনার সমাধান কাজ করে। তবে আমি কিছুটা বিভ্রান্ত। হেড সর্বশেষ প্রতিশ্রুতি সংখ্যার দিকে নির্দেশ করে। সুতরাং, যখন আমরা গিট করি, ওয়ার্কিং ডিরেক্টরিের সূচকটি আপডেট হয় এবং হেডের নয়। সুতরাং এটি কীভাবে পার্থক্যটি দেখায়।
মাভা 55

17

স্থানীয় পার্থক্যগুলি পরীক্ষা করতে:

git diff myfile.txt

অথবা আপনি একটি ডিফ সরঞ্জাম ব্যবহার করতে পারেন (আপনি যদি কিছু পরিবর্তন ফিরিয়ে দিতে চান):

git difftool myfile.txt

git difftoolআরও দক্ষতার সাথে ব্যবহার করতে , আপনার প্রিয় জিইউআই সরঞ্জাম যেমন মোল্ড, ডিফফর্মেজ বা ওপেনডিফ ব্যবহার করুন এবং ব্যবহার করুন।

দ্রষ্টব্য: আপনি .বর্তমান দির পরিবর্তনগুলি দেখতে (ফাইলের পরিবর্তে) ব্যবহার করতে পারেন।

প্রতি লাইন প্রতি পরিবর্তনগুলি পরীক্ষা করতে, ব্যবহার করুন: git blameযা কোন লাইনটি কোন প্রতিশ্রুতিতে কমিট হয়েছিল তা প্রদর্শন করবে।


কমিট করার আগে আসল ফাইলটি দেখতে ( masterআপনার শাখাটি কোথায় ), চালনা করুন:

git show master:path/my_file

15

আপনি কি -v(বা --verbose) বিকল্পটির জন্য চেষ্টা করেছেন git commit? এটি বার্তা সম্পাদকে প্রতিশ্রুতিবদ্ধতার ভিন্নতা যুক্ত করে।


ভাল উত্তর. এটি কমিট সম্পাদকের তথ্য সরবরাহ করতে পারে, আমাকে আরও সহজে প্রতিশ্রুতিবদ্ধ করে তোলে। তথ্যের ক্ষেত্রটি বন্ধ করার কোনও উপায় রয়েছে Changes not staged for commit:যার মাধ্যমে কমিট সম্পাদককে আরও পরিষ্কার করা যায়।
রাদিয়ান ঝেং

15

আপনি আরও একটি পেডেন্টিক যা শেষ প্রতিশ্রুতি সঙ্গে একটি ফাইল তুলনা করতে চান তা বিবেচনা করার জন্য অন্য কৌশল:

git diff master myfile.txt

এই কৌশলটির সাথে সুবিধাটি আপনি পেনাল্টিমেট কমিটের সাথে তুলনা করতে পারেন:

git diff master^ myfile.txt

এবং তার আগে একটি:

git diff master^^ myfile.txt

এছাড়াও আপনি ক্যারেট '^' চরিত্রের জন্য '~' এবং যদি আপনি মাস্টার শাখায় না থাকেন তবে 'মাস্টার' এর জন্য 'আপনি শাখার নাম' রাখতে পারেন।


14

আমি মনে করি এটি একটি GUI এর পরোয়ানা নিখুঁত ব্যবহারের কেস। - যদিও আমি সম্পূর্ণরূপে বুঝতে পারি যে কমান্ড লাইনের মধ্যেও এটি যথেষ্ট পরিমাণে অর্জন করা যেতে পারে।

ব্যক্তিগতভাবে, আমার প্রতিটি প্রতিশ্রুতি আমি গিট-গুই থেকে করি। যার মধ্যে আমি পৃথক কুকুর / লাইনগুলি দিয়ে একাধিক পারমাণবিক চুক্তি করতে পারি যদি এটি করার বুদ্ধি হয়।

গুট গুই একটি ভাল ফর্ম্যাট রঙিন ইন্টারফেসে ডিফগুলি দেখতে সক্ষম করে, বরং হালকা। দেখে মনে হচ্ছে এটি এমন কিছু যা আপনার খুব চেকআউট করা উচিত।


আমি সম্মত - এটি আপনাকে ভিন্নতার দিকে তাকানোর সময় কমিট বার্তা সম্পাদনা করার অনুমতি দেয়।
ফ্রান্সোইস

জেনে রাখা ভাল, তবে আমি সিএলআইয়ের সাথে লেগে থাকতে চাই। আমি এটির একটি দুটি প্যাকেজ ব্যবহার করেছি, তবে আমি আমার কর্মপ্রবাহের জন্য কঠোরভাবে টার্মিনাল / ভিমে চলে এসেছি। ধন্যবাদ যদিও.
সস ম্যাকবস

হ্যাঁ আপনি জিইউআইতে লেগে থাকলে এমন অনেক দুর্দান্ত বৈশিষ্ট্য রয়েছে git bisectযা সত্যিই অ্যাক্সেসযোগ্য নয়।
NoBugs

2
আমি সম্মত হই - এমন অনেকগুলি বিকল্প রয়েছে যার জন্য এটি আরও দ্রুত এবং কমান্ড লাইনটি ব্যবহার করে আরও বোধগম্য। যাইহোক, পরিবর্তনগুলির পূর্বরূপ দেখুন সেগুলির মধ্যে একটি নয়।
ভিটালিবি

টেক্সট ব্যবহারকারীর ইন্টারফেসও রয়েছে, যা টার্মিনালে চালিত হয়। tig"গিটের জন্য পাঠ্য-মোড ইন্টারফেস" চেক আউট করার একটি মূল্য রয়েছে ।
স্মিডো

10

ম্যাকোজে, গিট রুট ডিরেক্টরিতে যান এবং প্রবেশ করুন git diff *


হ্যাঁ এটি করে, আমি এটি পরীক্ষা করেছিলাম। আপনি কি গিট ইনস্টল করেছেন? কোন ত্রুটি বার্তা? সম্ভবত এই সম্পর্কে একটি নতুন প্রশ্ন জিজ্ঞাসা করা যেতে পারে।
কেটানোরে

4

আমি উত্সর্গীকৃত কমিট জিইউআই ব্যবহার করে git difftool -dসন্ধানের সর্বোত্তম উপায়টি হ'ল - এটি বর্তমান তুলনামূলক ফোল্ডারের সাথে হেডের তুলনা করে ডিরেক্টরি তুলনা মোডে আপনার ডিফ সরঞ্জামটি খোলে।


ঠিক আমার যা দরকার ছিল ধন্যবাদ
ইভান ফেরার ভিলা

3
git difftool -d HEAD filename.txt

এটি টার্মিনালে ষষ্ঠ স্লিট উইন্ডো ব্যবহার করে একটি তুলনা দেখায়।

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