স্থানীয় আপমুক্ত পরিবর্তন এবং উত্সের মধ্যে কীভাবে পার্থক্য করা যায়


141

ধরা যাক আমি একটি সংগ্রহস্থল ক্লোন করেছি এবং ফাইলগুলি সংশোধন শুরু করেছি। আমি জানি যে আমার যদি স্থানীয় অনিয়ন্ত্রিত পরিবর্তন হয় তবে আমি নিম্নলিখিত হিসাবে একটি পৃথক কাজ করতে পারি git diff test.txtএবং এটি আমাকে বর্তমান স্থানীয় হেড এবং ফাইলের পরিবর্তিত, অনির্ধারিত পরিবর্তনের মধ্যে পার্থক্য দেখাবে। আমি যদি এই পরিবর্তনগুলি সম্পাদন করি তবে আমি এটি ব্যবহার করে মূল সংগ্রহস্থলের বিরুদ্ধে পৃথক করতে পারিgit diff master origin/master

তবে স্থানীয়ভাবে প্রতিশ্রুতি দেওয়ার আগে সার্ভারে মূল সংরক্ষণাগারের সাথে স্থানীয় পরিবর্তনগুলি আলাদা করার কোনও উপায় আছে কি? আমি ভাগ্যবিহীন বিভিন্ন আদেশের চেষ্টা করেছি git diff --cached master origin/master


আমি জানতে চেয়েছিলাম যে আমার ফাইলটি আমার স্থানীয় প্রতিশ্রুতিবদ্ধ সংস্করণ থেকে কতটা পরিবর্তন হয়েছে। আমার প্রশ্নের উত্তর ছিল এই প্রশ্ন। ধন্যবাদ!
সৌভিক ঘোষ

উত্তর:


133

এটি দিয়ে যে দূরবর্তী সংগ্রহস্থলটি ক্যাশে করা হয়েছে git fetchতা এই কমিটগুলির সাথে তুলনা করা সম্ভব। নিম্নলিখিত চেষ্টা করুন:

$ git fetch origin
$ git diff origin/master

5
আহ, দুর্দান্ত। চাবিকাঠিটি ছিল মাস্টারকে ছেড়ে দেওয়া। আমি যেখানে আগে আনতে গিয়েছিলাম সেখানে একটি সংমিশ্রণ চেষ্টা করেছি, কিন্তু আমি যখন git diff master origin/masterএটি করেছি তখনও এটি প্রতিশ্রুতিবদ্ধ সংস্করণটির সাথে তুলনা করছিলাম (পিছনে স্পষ্ট) in তবে এখন মাস্টারকে ছেড়ে চলে আসার সংস্করণটির সাথে স্থানীয় পরিবর্তনের তুলনা করা।
চৈতন্য

@ চৈতন্য ভাল আমি সাহায্য করতে পারে। আসলে আমি খুঁজে পাই বিভিন্ন স্টাইলগুলি গিট কিছুটা জ্বালাময় ব্যবহার করে: একবার আপনাকে লিখতে হবে origin masterএবং অন্য কোথাও origin/master। আইএমএইচও করার এখনও কাজ রয়েছে।
জেজেডি

এটি কাজ করে বলে মনে হচ্ছে না: উত্সর ভিত্তিতে git diff origin/masterরিটার্নের fatal: ambiguous argument 'origin/master': unknown revision or path not in the working tree.মাস্টার উপস্থিত রয়েছে, উদাহরণস্বরূপ ভাল git fetch origin masterকাজ করে
মাইকমেকানা

42

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

বাক্য গঠন:

git diff <commit-ish>:./ -- <path>

উদাহরণ:

git diff origin/master:./ -- README.md
git diff HEAD^:./ -- README.md
git diff stash@{0}:./ -- README.md
git diff 1A2B3C4D:./ -- README.md

(এরিক বোহেসকে দুবার ফাইলের নাম টাইপ না করার জন্য ধন্যবাদ)


আমি উপরের সংকীর্ণের চেয়ে সাধারণ সমাধানটি আরও ভাল পছন্দ করি। মাইন্ড শেয়ারিং আপনি কোথায় পেলেন?
fbicknel

commit-ishকলোন বিভাজকের বিবরণে আমি ডকুমেন্টেশন খুঁজে পাচ্ছি না । উপর ডক্স Git-পরিবর্তন বলে মনে হচ্ছে না এটা উল্লেখ করতে পারি না। আমি এটি এত দিন ব্যবহার করেছি যে আমি কোথায় খুঁজে পেয়েছি তা মনে নেই। সম্ভবত অন্যান্য কমান্ডগুলিতে অন্যান্য ব্যক্তির উদাহরণ এবং আমি স্রেফ পরীক্ষা-নিরীক্ষা করেছি git-diff। আমি ভয় করছি যে এই মুহুর্তে আমি উত্তরটি নিয়েcommit-ish আসতে পারি তার সেরা উত্তর
নট

3
এটির জন্য একটি দুর্দান্ত সংযোজন git diff master:./ -- README.md। এইভাবে আপনাকে README.mdদু'বার টাইপ করতে হবে না এবং আপনি এটি সহজে কোনও উপাধিতে যুক্ত করতে পারেন।
এরিক বোহহস

ধন্যবাদ @ এরিকবোহস, এটি একটি দুর্দান্ত পরামর্শ।
নাট

1
যে বাক্য গঠন আমার জন্য কাজ না করে ... বেশ একটি সৃষ্টি দূরবর্তী শাখা উৎস বদলে। গিট সংস্করণ ২.১৯.০git diff master: -- README.md.//dev/null
রাস্টিদেভ

21

বিদ্যমান ফাইলে নন-স্টেজড (অ-যুক্ত) পরিবর্তনগুলি দেখতে

git diff

মনে রাখবেন এটি নতুন ফাইলগুলি ট্র্যাক করে না। মঞ্চস্থ, অ-প্রত্যাবর্তিত পরিবর্তনগুলি দেখতে

git diff --cached


9

আপনি যদি ফাইলগুলি ভিজ্যুয়ালভাবে তুলনা করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

git difftool

প্রতিটি পরিবর্তিত ফাইলের জন্য এটি স্বয়ংক্রিয়ভাবে আপনার ডিফ অ্যাপ্লিকেশনটি শুরু করবে।

PS: আপনি যদি কোনও ভিন্ন অ্যাপ্লিকেশন সেট না করে থাকেন তবে আপনি নীচের উদাহরণের মতো এটি করতে পারেন (আমি উইনমার্জ ব্যবহার করি ):

git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
git config --global mergetool.prompt false

এই পরিবর্তন অবিলম্বে কার্যকর হয়?
দিলীপ রঘুনাথন

আমি শুধু কৌতূহলী, জিজ্ঞাসা করা প্রশ্নের সাথে এটি কীভাবে সম্পর্কিত? গিট ডিফ্টল কি কেবল স্থানীয় পরিবর্তনকে মাস্টারের সাথে তুলনা করতে পারে? তবে ওপি স্থানীয় পরিবর্তন এবং দূরবর্তী মাস্টারের মধ্যে এটি চায়।
infoclogged

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