গিট ডিফ্টল, সিরিয়াল নয়, তাত্ক্ষণিকভাবে সমস্ত ভিন্ন ফাইল খুলুন


240

ডিফল্ট গিট ডিফের আচরণটি হ'ল সিরিয়ালটিতে প্রতিটি ডিফ ফাইল খুলতে (পরের ফাইলটি খোলার আগে পূর্ববর্তী ফাইলটি বন্ধ হওয়ার অপেক্ষায়)।

আমি একবারে সমস্ত ফাইল খোলার জন্য একটি উপায় খুঁজছি - উদাহরণস্বরূপ বিয়ন্ডম্পম্পারে এটি একই বিসি উইন্ডোর মধ্যে ট্যাবগুলিতে সমস্ত ফাইল খুলবে।

এর ফলে জটিল জটিল পরিবর্তনের পর্যালোচনা করা সহজ হবে; ভিন্ন ফাইলগুলির মধ্যে পিছনে এবং সামনে ফিক্স করুন এবং গুরুত্বহীন ফাইলগুলিকে উপেক্ষা করুন।


"গিট ডিফ" বা "গিট ডিফ্টল"? আপনি অনুরোধ পোস্ট করতে চাইতে পারেন (সবার জন্য উন্মুক্ত, এবং বৈচিত্রপূর্ণ ওয়েব ইন্টারফেস সহ) গিট মেলিং তালিকায়: git@vger.kernel.org
জাকুব নরবস্কি

আমি বাইরের ডিফ অ্যাপ্লিকেশন ট্রিগার করতে "গিট ডিফ্টল" ব্যবহার করছি। মেলিং তালিকা ধারণার জন্য ধন্যবাদ।
সেবা ইলিংওয়ার্থ

প্ল্যাটফর্মটি জানার জন্য এটি সহায়ক হবে। ইউনিক্স-ভিত্তিক প্ল্যাটফর্মে, আমি ভিন্নতা সম্পাদন করতে একটি স্ক্রিপ্ট লিখব এবং সেই স্ক্রিপ্টটি ব্যবহারের জন্য গিটকে নির্দেশ দেব। স্ক্রিপ্টে, আমি কেবল ব্যাকগ্রাউন্ডে ভিন্নতা চালাতাম তবে স্ক্রিপ্টটি মারা যেতে দিন।
ক্রিস কিল্যান্ড 16

উইন্ডোজ প্ল্যাটফর্ম, তবে ক্রিসের ধারণার জন্য ধন্যবাদ।
সেবা ইলিংওয়ার্থ

উত্তর:


214

gitV1.7.11 দিয়ে শুরু করে আপনি ব্যবহার করতে পারেনgit difftool --dir-diff

এই বৈশিষ্ট্যটি উদাহরণস্বরূপ মেল্ড 3.14.2 এর সাথে ভালভাবে কাজ করে এবং আপনাকে সমস্ত পরিবর্তিত ফাইল ব্রাউজ করতে দেয়:

git difftool --dir-diff --tool=meld HEAD~ HEAD

এটি একটি সহজ ব্যাশ ফাংশন:

git-diff-meld() (
  git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)

উত্তরটি পরবর্তী যা gitv1.7.11 এর চেয়ে পুরানো প্রতিষ্ঠানে প্রযোজ্য ।


এই একই প্রশ্নটি গিট মেল তালিকায় জিজ্ঞাসা করা হয়েছিল

আমি সেই ইমেল থ্রেডের উপর ভিত্তি করে শেল স্ক্রিপ্ট একসাথে রেখেছি যা স্বেচ্ছাসেবী কমিটির মধ্যে একটি ডিরেক্টরিকে পৃথক করে।

গিট v1.7.10 দিয়ে শুরু করে, git-diffallস্ক্রিপ্টটি contribস্ট্যান্ডার্ড গিট ইনস্টলেশনটির অন্তর্ভুক্ত করা হয়েছে ।

V1.7.10 এর আগে সংস্করণগুলির জন্য, আপনি গিটহাবেরgit-diffall প্রকল্প থেকে ইনস্টল করতে পারেন ।

প্রকল্পের বিবরণ এখানে:

গিট-ডিফাল স্ক্রিপ্ট গিটের জন্য একটি ডিরেক্টরি ভিত্তিক ডিফ মেকানিজম সরবরাহ করে। স্ক্রিপ্টটি ডিফ ভিউয়ারটি কী ব্যবহৃত হয় তা নির্ধারণের জন্য ডিফেল টোল কনফিগারেশন বিকল্পের উপর নির্ভর করে।

এই স্ক্রিপ্টটি বিভিন্ন রূপগুলির বিভিন্ন সংশোধনী নির্দিষ্ট করতে ব্যবহৃত সমস্ত ফর্মের সাথে সামঞ্জস্যপূর্ণ:

1) git diffall: কার্যক্ষম গাছ এবং মঞ্চযুক্ত পরিবর্তনের মধ্যে পার্থক্য দেখায়
2) git diffall --cached [<commit>]: মঞ্চ পরিবর্তন এবং HEAD (অথবা অন্য নামযুক্ত প্রতিশ্রুতি)
3) git diffall <commit>: কার্যকরী গাছ এবং নামযুক্ত প্রতিশ্রুতি
4 এর মধ্যে পার্থক্য দেখায় git diffall <commit> <commit>: দুটি নামযুক্ত কমিট
5 এর মধ্যে পার্থক্য দেখান git diffall <commit>..<commit>: একই above উপরে হিসাবে
) git diffall <commit>...<commit>: উভয়ের একটি সাধারণ পূর্বপুরুষ থেকে শুরু করে এবং দ্বিতীয় পর্যন্ত শাখায় পরিবর্তনগুলি দেখান<commit>

দ্রষ্টব্য: সমস্ত ফর্ম একটি pathচ্ছিক পথ সীমাবদ্ধ করে [--] [<path>]

এই স্ক্রিপ্টটি গিট তালিকায় টমাস রাস্টের দেওয়া উদাহরণের ভিত্তিতে তৈরি ।


গিট-ডিফ্লেস এবং গিথুব / উইম্যানলে / গিটমিল্ডের মধ্যে পার্থক্য কী ? আমি উভয়ের চেষ্টা করেছি এবং তারা প্রথম নজরে অভিন্ন কার্যকারিতা সরবরাহ করেছে বলে মনে হচ্ছে।
কিনান

5
আমি এক জন্য আপনার স্ক্রিপ্ট প্রশংসা করি। সত্যি বলতে গেলে, আমি বুঝতে পারি না যে গীত এই বিষয়ে সঠিকভাবে কেন আচরণ করে না (মার্চুয়ালিয়াল তা করেন এবং বছরের পর বছর ধরে এটি করেছেন), এবং আমি গীত সম্প্রদায়ের আগ্রহের অভাবও বুঝতে পারি না।
ডগলাস

6
আপডেট ( git difftool --dir-diffতুলনা সম্পর্কিত এবং এর বাইরে): আমি স্কুটার সফ্টওয়্যার (তুলনা ছাড়িয়ে লেখকদের) সাথে যোগাযোগ করেছি এবং তারা বলে যে bcompare.exeএটি কোনও সমর্থিত সমাধান নয় এবং যদি একসাথে একাধিক পার্থক্য খোলা থাকে তবে সমস্যা হতে পারে। তারা bcomp.exeভবিষ্যতের সংস্করণে ফোল্ডার ডিফ্সের জন্য সমর্থন যুক্ত করার পরিকল্পনা করছে (এর মধ্যে আমি bcompare.exeএকটি অসমর্থিত কর্মজীবন হিসাবে ব্যবহার করা চালিয়ে যাব )।
পিটার মরিচ

4
@Coin আমি মাত্র 4 এর বাইরে তুলনা করে পরীক্ষা করেছি এবং --dir-diff সমর্থিত bcomp.exe এর সাথে কাজ করে বলে মনে হচ্ছে।
পিটার জাস্ট

5
শুধু মন্তব্য করার জন্য যে --dir-diffমেল্ডের সাথে নিখুঁতভাবে কাজ করে। সেখান থেকে, এটি আপনাকে পৃথক ফাইলগুলির জন্য পৃথকগুলি নির্বাচন করতে এবং দেখতে দেয়।
এমকাসবার্গ

61

আমি এখানে যা স্থির করেছি ...

নিম্নলিখিত কোডটি কোনও ফাইল git-diffall(কোনও এক্সটেনশন নয়) অনুলিপি করুন :

#!/bin/sh
git diff --name-only "$@" | while read filename; do
    git difftool "$@" --no-prompt "$filename" &
done

cmdআপনার গিট ইনস্টল দির ফোল্ডারে ফাইলটি রাখুন (উদাঃ)C:\Program Files (x86)\Git\cmd )

এবং আপনি যেমন ব্যবহার করুন git diff:

git diffall
git diffall HEAD
git diffall --cached 
git diffall rev1..rev2
etc...

নোটস: এর মূল চাবিকাঠিটি হল & পরম যা ব্যাকগ্রাউন্ড টাস্কে চালানোর জন্য বাহ্যিক ডিফ কমান্ডকে বলে যাতে ফাইলগুলি সাথে সাথে প্রক্রিয়া করা হয়। বিয়ন্ডকম্পের ক্ষেত্রে এটি প্রতিটি ফাইলের নিজস্ব ট্যাবে একটি পর্দা খোলে।


পোস্ট করার জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, এটি উইনমার্জের -s বিকল্পের সাথে কাজ করে না। উইনমার্গের দিকে নজর দেওয়ার আগে প্রথমটি বাদে সমস্ত অস্থায়ী ফাইল মুছে ফেলা হয়।
কার্লোস রেন্ডন

কার্লোস: আমি উইনমার্জ উইথ গিট ব্যবহার করি। আমার পদ্ধতিটি ছিল উইনমার্জ চালু করার পরে একটি 'ঘুম 1' যুক্ত করা (যা আমার ক্ষেত্রে ইতিমধ্যে "পটভূমিতে" প্রবর্তিত বলে মনে হয় - এর কোনও প্রয়োজন নেই)। এইভাবে অস্থায়ী ফাইলটি উইনমার্গের একবারে বাছাইয়ের পক্ষে যথেষ্ট দীর্ঘকাল বেঁচে থাকে (অদ্ভুত ক্ষেত্রে বাদে)। এর অর্থ এই নয় যে সমস্ত ফাইল খুলতে ফাইলের জন্য 1 সেকেন্ড সময় লাগে। এটি একটি বাজে হ্যাক (আমি এটিকে কখনই "উত্তর" হিসাবে উপস্থাপন করব না!) তবে এটি একটি সহজ, মোটামুটি কার্যকর।
উডি জেনফেল III

2
লিনাক্স-এ গিট ২.x ব্যবহারের জন্য আমাকে কিছুটা পরিবর্তন করতে হয়েছিল: এতে পরিবর্তন "$filename"করুন "../$filename"। তারপরে এটি তুলনা ছাড়িয়ে পুরোপুরি কাজ করেছে
ডেভ সি

1
@ ডেভিকে মূল থ্রেডে এটি "আপনার গিট ইনস্টলের সিএমডি ফোল্ডারে ফাইলটি সংরক্ষণ করতে" বলে এবং উইন্ডোতে উদাহরণ সহকারে এগিয়ে যায়। আপনি লিনাক্সে "গিট-ডিফাল্ফ" ফাইলটি কোথায় সঞ্চয় করেছিলেন?
m4l490n

2
ফোল্ডারে git-diffallফাইল যুক্ত করার পরে কি আমাদের উইন্ডোজগুলি পুনরায় চালু করতে হবে C:\Program Files\Git\cmd? আমি ঠিক যেমন নির্দেশিত $ git diffall git: 'diffall' is not a git command. See 'git --help'. Did you mean this? difftool
তেমনটি করেছি

19

meld একটি ঝরঝরে বৈশিষ্ট্য রয়েছে যে আপনি যদি এটি উত্স নিয়ন্ত্রণের অধীনে একটি ডিরেক্টরি দেন (গিট, মার্কুরিয়াল, সাবভারশন, বাজার এবং সম্ভবত অন্যান্য) এটি স্বয়ংক্রিয়ভাবে সমস্ত পরিবর্তিত ফাইল তালিকাভুক্ত করবে এবং স্বতন্ত্র পার্থক্যগুলি দেখতে আপনি ডাবল-ক্লিক করতে পারেন।

আইএমও এটি meld .প্রবর্তন করতে আপনার ভিসিএসকে কনফিগার করার চেয়ে ভিসিএস টাইপ করা অনেক সহজ এবং এটির পক্ষে অনেক সহজেmeld । এছাড়াও আপনি একই কমান্ডটি ব্যবহার করতে পারেন আপনার ভিসিএস আপনার প্রকল্পটি ব্যবহার করে যা ঘটছে তা বিবেচনা করে না, আপনি যদি তাদের মধ্যে অনেকটা স্যুইচ করেন তবে দুর্দান্ত।

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


4
আমার কাছে প্রধান খারাপ দিকটি হ'ল মেল্ড (যে কোনও কারণেই) নতুন ট্যাবটির পরিবর্তে একটি নতুন উইন্ডোতে পৃথকটি খোলে এবং পার্থক্যটি বন্ধ করার পরে, কার্যক্ষম ডিরেক্টরিতে ফাইলটি একটি বিরক্তিকর পপআপ বার্তা সহ একটি নতুন ট্যাবে খোলে।
কিনান

দুর্দান্ত সরঞ্জাম তবে ভয়ঙ্কর উইন্ডোজ ইনস্টল (২০১২ সালের প্রথমদিকে)।
ওয়ার্নাইট

@ কেনান এটি বিরক্তিকর কোনও ভিসিএস অজ্ঞেয় পদ্ধতিতে নিখুঁত সমাধান বলে মনে হচ্ছে যদি বিরক্তিকর ডাবল উইন্ডো পপআপ জিনিসটির জন্য না হয়। এটা একটা লজ্জাজনক ব্যপার. :(
পিকেকিড

মেল্ডের একটি দুর্দান্ত বৈশিষ্ট্য হ'ল এর আলাদা ফিল্টারগুলি: মন্তব্যগুলিতে পরিবর্তনগুলি উপেক্ষা করুন বা ফাঁকা লাইনগুলি যুক্ত / অপসারণ করুন যা git diffপ্রস্তাব দেয় না।
কিনান

1
আমি এই পদ্ধতির এক বা এক বছর ব্যবহার করেছি; এটি ছোট প্রকল্পগুলির জন্য সূক্ষ্ম কাজ করে তবে একবার আপনার কাছে একটি বড় প্রকল্প (যেমন প্রচুর ফাইল) হয়ে যায় এটি নিষিদ্ধভাবে ধীর হয় কারণ এটি গিটার ডিফার্সের জন্য ম্যানুয়ালি "স্ক্যান" করে (নিশ্চিত না কেন যখন গিট স্পষ্টভাবে একটি তালিকা সরবরাহ করতে পারে তখন এটি কেন এই পদ্ধতির গ্রহণ করে) ফাইলগুলি সরাসরি ...)
নামুওল

3

আমি এই পদ্ধতিটি খুঁজে পেয়েছি (গিটডিফ.বাট এবং গিটডিফ.আরবি) যা পুরানো / নতুন টেম্প ডায়ারগুলিতে ফাইলগুলি অনুলিপি করে এবং তারপরে একটি ফোল্ডার তুলনা করে।

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

সম্পাদনা: গিট মেইলিং তালিকায় আমার প্রশ্নের জবাবে এখানে একটি অনুরূপ পদ্ধতি


3

git meld=> https://github.com/wmanley/git-meld একটি দুর্দান্ত স্ক্রিপ্ট যা একক উইন্ডোতে সমস্ত ফাইলের ঝরঝরে আলাদা করে খুলবে।


দুর্দান্ত কাজ! একটি যুক্ত বোনাস হিসাবে এটি ঠিক এইচজি মেল্ডের মতো কাজ করে। ধন্যবাদ!
পিকেকিড

2

এখানে লক্ষণীয় যে আরাক্সিস মার্জে একটি '-নোয়েট' কমান্ড বিকল্প রয়েছে:

-নোয়েট তুলনা বন্ধ হওয়ার জন্য অপেক্ষা করা থেকে বিরত রাখে

হতে পারে এটি তাত্ক্ষণিক প্রস্থান কোড ফেরায় এবং কাজ করবে, কেউ এটির অভিজ্ঞতা পেয়েছে? বিয়ন্ডকম্পারে এর জন্য অনুরূপ বিকল্পটি খুঁজে পাচ্ছে না ...


2

ডিফিউজের ভিসিএস ইন্টিগ্রেশনও রয়েছে। এটি এসভিএন, মারকুরিয়াল, বাজার সহ অন্যান্য ভিসিএসের আধিক্যের সাথে হস্তক্ষেপ করে ... গিটের জন্য, এমনকি কিছু পরিবর্তন করা হলেও তা তিনটি ফলক প্রদর্শন করবে। দ্বন্দ্বের ক্ষেত্রে, এমনকি চারটি পেন থাকবে।

স্টেজড এবং স্টেস্টেড না করা সম্পাদনাগুলির সাথে ছড়িয়ে দেওয়ার স্ক্রিনশট

সাথে এটি চাওয়া

diffuse -m

আপনার গিট ওয়ার্কিং কপি।

আপনি যদি আমাকে জিজ্ঞাসা করেন, আমি এক দশক ধরে সেরা দর্শনের চেয়ে ভিন্ন visual (এবং আমিও চেষ্টা করেছি


আপনি কী ছড়িয়ে দিতে চান কোন অংশটি আপনি পছন্দ করতে পারেন, বিশেষত মেল্ডের ওপরে?
মুশিফিল

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

1
ডিফিউজ কোনও কনফিগারেশন ছাড়াই গিটের সাথে কাজ করেছিল। ডিফিউজ-এম বিভিন্ন ট্যাবে গিট ডিফ্স সহ একক উইন্ডোটি খোলায়; অন্য অন্যান্য সরঞ্জাম এমনকি এমনকি শুরু করতে খুব বেশি কনফিগারেশন প্রয়োজন।
মোশ

1

আপনি যা করতে চান তা যদি বর্তমানে পরিবর্তিত সমস্ত ফাইলগুলি খুলতে থাকে তবে এর মতো কিছু চেষ্টা করুন:

vi $ (গিট স্ট্যাটাস | সেড-এন '/.* রুপান্তরিত: * / গুলি /// পি')

যদি আপনি "জটিল সেটগুলির পরিবর্তনগুলির সেট" এর কমিট করে থাকেন তবে আপনি নিজের কর্মপ্রবাহটি পুনর্বিবেচনা করতে চাইতে পারেন। গিটের সত্যিই দুর্দান্ত বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল এটি বিকাশকারীকে সাধারণ প্যাচগুলির একটি সিরিজের জটিল পরিবর্তন সেটগুলি হ্রাস করা সহজ করে তোলে। বর্তমানে পরিবর্তিত সমস্ত ফাইল সম্পাদনা করার চেষ্টা করার পরিবর্তে আপনি সন্ধান করতে পারেন

গিট অ্যাড - প্যাচ
যা আপনাকে নির্বাচিতভাবে মুরগীর মঞ্চে মঞ্জুরি দেবে।


1

আমি একটি পাওয়ারশেল স্ক্রিপ্ট লিখেছি যা দুটি কার্যকারী গাছের নকল করবে এবং ডিফর্মজের সাথে তুলনা করবে। সুতরাং আপনি এটি করতে পারেন:

GitNdiff master~3 .

উদাহরণস্বরূপ, বর্তমান কার্যক্ষম গাছের সাথে তিনটি চেকইন আগে মাস্টার শাখা তুলনা করতে।

এটি চকচকে এবং নতুন এবং সম্ভবত বাগগুলি পূর্ণ। একটি অপূর্ণতা হ'ল আপনার কার্যক্ষম গাছের যে ফাইলগুলি এখনও যোগ করা হয়নি সেগুলি উভয় কার্যক্ষম গাছের মধ্যে অনুলিপি করা হয়। এটি ধীর হতে পারে।

http://github.com/fschwiet/GitNdiff


1

আরাক্সিসের সাথে ম্যাক ওএস এক্স-এ গিট-ডিফল্ট ব্যবহার করতে আগ্রহী তাদের জন্য, আমি গিথুব-এ গিট-ডিফল্ট প্রকল্পটি স্বাক্ষরিত করেছিলাম এবং একটি অ্যাপলস্ক্রিপ্ট যুক্ত করেছি যা আরাক্সিস মার্জ কমান্ডটি মোড়ক করে। দ্রষ্টব্য: এটি araxisgitdiffম্যাক ওএস এক্সের জন্য আরাক্সিস মার্জ করে যে ফাইলটি পাঠানো হয় এটির একটি সামান্য পরিবর্তিত ক্লোন is

https://github.com/sorens/git-diffall


1

নিম্নলিখিতটি মেল্ড এবং কেডিফ 3 এর সাথে কাজ করে

git difftool --dir-diff origin/branch1..origin/branch2

উইন্ডোতে সমস্ত ফাইল খোলে যা আপনি সহজেই ব্রাউজ করতে পারবেন। উত্স / শাখা-নামের জায়গায় চেঞ্জসেটের সাহায্যে ব্যবহার করা যেতে পারে

উদাহরণ: git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1


-2

আপনি গিটক ব্যবহার করতে পারেন এবং একই সাথে সমস্ত পার্থক্য দেখতে পারেন


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