দুটি সংগ্রহস্থলের মধ্যে পার্থক্য পাওয়া


180

দুটি গিট সংগ্রহস্থলের মধ্যে আমরা কীভাবে পার্থক্য পেতে পারি?

দৃশ্য: আমাদের একটি রেপো_এ এবং রেপো_বি রয়েছে। পরেরটি repo_a এর অনুলিপি হিসাবে তৈরি হয়েছিল। উভয় ভাণ্ডারের পরে সমান্তরাল বিকাশ হয়েছে। এই দুটি সংগ্রহস্থলের বর্তমান সংস্করণগুলির পার্থক্যগুলি তালিকাভুক্ত করার কোনও উপায় আছে কি?


উত্তর:


249

রেপো_এতে:

git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b

অন্যান্য উত্তর অনুসারে আমাকে রিমোটস / বি / মাস্টার নির্দিষ্ট করতে হয়েছিল: স্ট্যাকওভারফ্লো.
com

3
আপনার যদি repo_a / মাস্টারকে একটি নির্দিষ্ট ট্যাগ রেপো_বিয়ের সাথে তুলনা করতে হবে?
ডেভিড টরেস

2
আমার জন্য কাজ করছে না, এটি ছোঁড়াচ্ছে: মারাত্মক: দ্ব্যর্থহীন যুক্তি 'রিমোটস / বি / মাস্টার': অজানা সংশোধন বা পথ কার্যকর গাছটিতে নয়। পুনর্বিবেচনার থেকে পাথ পৃথক করতে '-' ব্যবহার করুন: এরকম: 'গিট <কম্যান্ড> [<পুনর্বিবেচনা> ...] - [<ফাইল> ...]' এখানে কোনও ধারণা আছে?
অ্যান্ড্রু হেকিন

2
আমি @ অ্যান্ড্রুহেকিনের মতোই পাচ্ছি। কারো কাছে কি কোন সমাধান আছে?
সংসদ

4
আমি origin/masterখালি চেয়ে নির্দিষ্ট করা প্রয়োজন বলে মনে হচ্ছে master। এছাড়াও, এটি মাস্টার শাখাগুলির মধ্যে পার্থক্য আবিষ্কার করে, তাই যদি আপনি সমস্ত শাখা পৃথক পৃথক দেখতে চান তবে কী হবে? উদাহরণস্বরূপ, একটি সংগ্রহস্থল ব্যাকআপের অবস্থা পরীক্ষা করতে চান?
ডেভিডা

33

মাউন্ট ডিরেক্টরি তুলনা করতে পারেন:

meld directory1 directory2

দুটি গিট রেপোর ডিরেক্টরিগুলি কেবল ব্যবহার করুন এবং আপনি একটি দুর্দান্ত গ্রাফিকাল তুলনা পাবেন:

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন নীল আইটেমগুলির একটিতে ক্লিক করেন, আপনি কী পরিবর্তন করেছেন তা দেখতে পাবেন।


1
আমার ভিএস সমাধানে প্রকল্পগুলির তুলনা করার সময় মাঠ হিমশীতল, বিয়ন্ডকম্পারে নেই are
সাশা বন্ড

3
ওএসএক্সে: ডিফফ-আরকিউ ফোল্ডার 1 ফোল্ডার 2
চিহ্নিত করুন

1
অপূর্ব লিঙ্ক! খুব সহজ প্রোগ্রাম, আমি এখন এটি ওএসএক্সের জন্য আমার ডিফ প্রোগ্রাম হিসাবে ব্যবহার করছি।
dmanexe

1
এটি একেবারে মনোরম! ভাগ করে নেওয়ার জন্য ধন্যবাদ.
শিহাব খান

আমি নিশ্চিত না যে
মেল্ড

11

আপনি আপনার বর্তমান রেপোতে রিমোট হিসাবে প্রথমে অন্যান্য রেপো যুক্ত করতে পারেন:

git remote add other_name PATH_TO_OTHER_REPO

তারপরে সেই দূরবর্তী থেকে ব্রাচ আনুন:

git fetch other_name branch_name:branch_name

এটি সেই শাখাকে আপনার বর্তমান রেপোতে একটি নতুন শাখা হিসাবে তৈরি করে, তারপরে আপনি সেই শাখাকে আপনার যে কোনও শাখার সাথে পৃথক করতে পারেন, উদাহরণস্বরূপ, নতুন শাখার (শাখা_নাম) এর সাথে বর্তমান শাখার তুলনা করতে:

git diff branch_name

7

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

git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*

সামান্য পরিবর্তন নিয়ে চেরি-পিক হিস্ট্রি করার কোনও উপায় আছে: উদাহরণস্বরূপ দূরবর্তী রেপো ফাইলটি একটি ডিরেক্টরিতে রাখা হয় তবে আমি একই ফাইলটিতে পরিবর্তনগুলি প্রয়োগ করতে চাই তবে যা স্থানীয় রেপোতে আলাদা ডিরেক্টরিতে রাখা হয়?
ইউজেন কনকভ

আপনি যদি একটি ছোট পরিবর্তন সম্পর্কে কথা বলছেন তবে আমি মনে করি সবচেয়ে সহজ হ'ল কেবল আলাদা হয়ে যাওয়া এবং তারপরে প্যাচ ব্যবহার করে অন্য ফাইলটিতে এটি প্রয়োগ করা।
মাইকেল ক্রেলিন - হ্যাকার

একই ফাইল থাকা সত্ত্বেও বিভিন্ন ফাইলের নামের কারণে প্যাচ প্রয়োগ করা হয় না
ইউজেন কনকভ

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

7
git diff master remotes/b

এটা ভুল। remotes/bএকটি দূরবর্তী, কিন্তু একটি শাখা নয়।

এটি কাজ করতে, আমাকে করতে হয়েছিল:

git diff master remotes/b/master

এটি সত্যিই প্রাসঙ্গিক উত্তরের একটি মন্তব্য হওয়া উচিত।
EntangledLoops

6

Http://git.or.cz/gitwiki/GitTips , "সাধারণ" -র "দুটি স্থানীয় সংগ্রহস্থলের তুলনা কীভাবে" বিভাগে দেখুন section

সংক্ষেপে আপনি অন্য সংগ্রহস্থলের অবজেক্ট ডাটাবেসে অ্যাক্সেস পেতে GIT_ALTERNATE_OBJECT_DIRECTORIES এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করছেন এবং অন্য সংগ্রহস্থলে প্রতীকী নামটি SHA-1 সনাক্তকারীতে রূপান্তর করতে / GIT_DIR দিয়ে গিট রেভ-পার্স ব্যবহার করছেন --git-dir

আধুনিক সংস্করণটি এর মতো দেখতে পাবেন (ধরে নিবেন যে আপনি 'রেপো_এ'তে রয়েছেন):

GIT_ALTERNATE_OBJECT_DIRECTORIES = .. / repo_b / .git / অবজেক্টস \
   গিট ডিফ f (গিট --git-dir = .. / repo_b / .git রেভ-পার্স - যাচাই করুন হেড) হেড

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


মনে রাখবেন যে যদি repo_a এবং repo_b একই সংগ্রহস্থল হয়, তবে উভয়কে একই সংগ্রহস্থলে রাখার জন্য আরও বুদ্ধিমান হতে পারে, হয় git remote add -f ...বার বার আপডেটের জন্য " git fetch ..." সংগ্রহস্থলের জন্য ডাকনাম তৈরি করতে, বা মান্য করা বন্ধ করে "; যেমন অন্যান্য প্রতিক্রিয়া বর্ণিত।


5

আমি পাইচার্ম ব্যবহার করি যার ফোল্ডার এবং ফাইলগুলির মধ্যে তুলনা করার দুর্দান্ত ক্ষমতা রয়েছে।

উভয় রেপোর জন্য মূল ফোল্ডারটি খুলুন এবং এটি সূচক না হওয়া পর্যন্ত অপেক্ষা করুন। তারপরে আপনি কোনও ফোল্ডার বা ফাইলের উপর ডান ক্লিক ব্যবহার করতে পারেন Compare to...এবং অন্যদিকে সংশ্লিষ্ট ফোল্ডার / ফাইলটি চয়ন করতে পারেন।

এটি কেবল কোন ফাইলগুলি পৃথক করে তা নয় তবে তাদের সামগ্রীও দেখায়। কমান্ড লাইনের চেয়ে অনেক সহজ।


2

আপনার সেরা বাজি হ'ল আপনার স্থানীয় মেশিনে উভয়ই রেপো রাখা এবং দুটি ডিরেক্টরিতে প্যারামিটার হিসাবে লিনাক্স ডিফ কমান্ড ব্যবহার করা:

diff -r repo-A repo-B


1
এটিকে ব্যবহারযোগ্য করে তোলার একমাত্র উপায় হ'ল .git ডিরেক্টরিগুলির একটির নামকরণ। এটি বিবেচনা করে না এমন দুটি লাইনের পৃষ্ঠাগুলির মধ্যে পার্থক্য। সেখানে এসেছেন, এটি করেছেন, আরও ভাল উত্তর খুঁজতে এখানে এসেছেন।
22:52 এ hildred

2

আপনার রিমোট কনফিগারেশনটি স্পর্শ না করে এটি করার একটি সহজ উপায়। রেপো এ থেকে, মাস্টারে (ধরুন আপনি মাস্টার শাখাগুলির তুলনা করতে চান):

git fetch path/to/repo_b.git master
git diff FETCH_HEAD

0

আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

diff -x .git -r repo-A repo-B

বা পাশাপাশি আপনি ব্যবহার করতে পারেন:

diff -x .git -W200 -y -r repo-A repo-B

প্রতিটি ভিন্ন ফাইলকে রঙিন করার ক্ষেত্রে, আপনি ব্যবহার করতে পারেন:

diff -x .git -W200 -y -r repo-A repo-B | sed -e "s/\(^diff .*\)/\x1b[31m\1\x1b[0m/"

@ অ্যান্ড্রু-হেকিন সমাধানের ভিত্তিতে
জেরার্ড

0

স্ব-অনুসারে স্মরণ করিয়ে দিন ... প্রথমে আনুন, অন্যথায় সঞ্চিত্রে স্থানীয় হ্যাশ নেই (আমার ধারণা)।

পদক্ষেপ 1. আপস্ট্রিম রিমোট এবং উপরে Set সেটআপ করুন ^

একটি একক ফাইলকে পৃথক করা এই ধরণটি অনুসরণ করে:

গিট ডিফার লোকাল ব্রাঞ্চ আপট্রিম ব্র্যাঙ্ক - স্পেসিপথ / সিঙ্গলফাইল

git diff master upstream/nameofrepo -- src/index.js

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