গিথুবে দুটি শাখার মধ্যে একটি একক ফাইলের জন্য আমি কীভাবে একটি পৃথক তৈরি করতে পারি?


111

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

আমি নিম্নলিখিত হিসাবে কমান্ড লাইনে এটি করতে পারি, তবে এটি ইমেলটির মাধ্যমে কারও কাছে পৃথক প্রেরণের প্রয়োজন হিসাবে আমার সহায়তা করে না:

git diff tag1 tag2 -- path/to/file

আমি এখানে কমান্ড লাইন সংস্করণটি আলোচিত পেয়েছি: আমি কীভাবে একটি স্থানীয় শাখা এবং দূরবর্তী শাখার মধ্যে একটি নির্ধারিত ফাইলে পার্থক্য দেখতে পারি?

উত্তর:


90

গিটহাব কেবলমাত্র দুটি কমিটের মধ্যে পার্থক্য দেখানোর উপায় উন্মোচন করে।

এই ট্যাগগুলিতে প্রকৃত অর্থে প্রতিশ্রুতিবদ্ধদের নির্দেশ করা হয়েছে, url ফর্ম্যাটটি এরকম কিছু হবে

https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}

উদাহরণ হিসাবে, https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5 LibGit2Sharp প্রকল্পের দুটি সংস্করণের মধ্যে পার্থক্য দেখায়। এই ডিফের মধ্যে সমস্ত পরিবর্তিত ফাইল অন্তর্ভুক্ত রয়েছে।

আপনি যদি একটি url পুনরুদ্ধার করতে চান যা একটি নির্দিষ্ট ফাইলকে লক্ষ্য করে:

  • ফাইল পরিবর্তিত ট্যাবে স্যুইচ করুন

পরিবর্তিত-ট্যাব

  • দেখার জন্য ক্লিক করুন দেখান পার্থক্য পরিসংখ্যান বোতাম (এই লিঙ্ক হিসাবে রুপান্তরিত ফাইলের তালিকা প্রদর্শন করবে)

প্রদর্শনী-পরিবর্তন

  • ক্লিপবোর্ডে আপনার পরে থাকা নির্দিষ্ট ফাইলটির লিঙ্কটি অনুলিপি করুন ... এবং তদা! তুমি করেছ.

উদাহরণস্বরূপ, উপরের পার্থক্যটি প্রদত্ত, https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5#diff-11 লিঙ্কটি LazyFixtures.csসংস্করণ v0.9.0 এবং এর মধ্যে সংঘটিত পরিবর্তনগুলি নির্দেশ করবে v0.9.5।

হালনাগাদ

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

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff

8
হাই, দেখে মনে হচ্ছে এটি আমার পক্ষে কাজ করবে না কারণ আমার ডিফটি অনেক বড়। আমি পাচ্ছি "এটি ভিন্নতা বড়! আমরা কেবল প্রথম ২,৫০০ ফাইলের জন্য স্থিতির তথ্য প্রদর্শন করছি। সুতরাং আমি কেবলমাত্র ডিফ লিঙ্কগুলি সহ সম্পূর্ণ ভিন্নতাগুলি পেয়েছি এবং সম্পূর্ণ ভিন্নতা পেয়েছি।
প্লেইনফ্ল্যাভোর

1
তবে আমি মনে করি আপনি ঠিক বলেছেন - এটি করার উপায়। ধন্যবাদ
প্লেফ্লেভোর

1
শাখাগুলির তুলনা করার সময় সিনট্যাক্স হাইলাইট পেতে আপনি এই ক্রোম এক্সটেনশন github.com/danielribeiro/github-diff-hightlight- এক্সটেনশনটিও ব্যবহার করতে পারেন ।
ড্যানিয়েল রিবেইরো

3
@ প্লেনফ্লাভোর আপনি আরও একবার এটি চালানোর ক্ষেত্রে এখানে আরও একটি সহজ টিপস - আপনার যখনই @ নালটোকেনের মতো তুলনা করা URL থাকে, আপনি সম্পূর্ণ ভিন্নতা দেখতে কেবল ইউআরএল শেষে একটি .ডিফ যোগ করতে পারেন (প্লেটেক্সট হিসাবেও )। যেমন https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}.diff উত্স
dmccabe

1
আমি শো ডিফ স্ট্যাটাস বোতামটি দেখতে পাচ্ছি না । শেষ হয়ে গেছে? নাকি আমি শুধু দেখছি না?
ডিসি

7

নিম্নলিখিত সমস্যাটি প্রয়োগ করার পরে এখানে আমার কার্যনির্বাহী।

এই তুলনা বড়! আমরা কেবল সাম্প্রতিক 250 টি কমিট প্রদর্শন করছি

আপনি যে ফাইলটি https://gist.github.com/ এর সাথে তুলনা করতে চান তার কাঁচা ভিউ অনুলিপি করুন । আপনি যে দুটি নির্দিষ্ট কমিট পয়েন্ট তুলনা করতে চান তা ব্যবহার করুন। পুরানো প্রতিশ্রুতি দিয়ে শুরু করুন।

আপনি যখন 'পুনর্বিবেচনাগুলি' ক্লিক করেন তখন https://gist.github.com/ এর পাশাপাশি পাশের পার্থক্য থেকে আলাদা আলাদা ভিউ থাকে।


3
আপনাকে ধন্যবাদ, এটি হ'ল gist.github.com/ncoghlan/1067805fe673b3735ac854e195747493/… জন্য আমার ঠিক পরামর্শটি ছিল ! :)
ncoghlan

3

উত্তরটি হ'ল পূর্ববর্তী চেকইনগুলির জন্য গিথহাব ওয়েব পৃষ্ঠায় কোনও ফাইলের কোড পরিবর্তনগুলির ইতিহাস / পুনর্বিবেশন কেবল (ডাউনলোড করতে নয়) দেখতে চান for

গিথুবে সেই ফাইলটিতে যান, তারপরে ইতিহাস নির্বাচন করুন । এটি নীচের মত চেকইন মন্তব্য লিঙ্কের তালিকা সহ পৃষ্ঠাটি খুলবে।

এখানে চিত্র বর্ণনা লিখুন এটিতে ক্লিক করার পরে কোড পরিবর্তনগুলি প্রদর্শিত হবে। ইতিহাস ক্লিক করার পরে; সমস্ত ফাইলের চেকইন প্যাকেজ স্তরের দেখতে আপনি প্যাকেজগুলিতে ক্লিক করতে পারেন।

গ্রহণে আপনি EGit প্লাগইন এবং ফাইলটিতে "ডান ক্লিক -> সাথে তুলনা করুন" ব্যবহার করে ইতিহাসের তুলনা করতে পারেন । আমি কিভাবে গ্রহদে গিটে দুটি সংশোধনী তুলনা করতে পারি?


1
আরও স্পষ্ট করে বলতে গেলে, আপনি অঙ্গীকারের he হেক্স-ডিজিটের "নাম" এ ক্লিক করেন (আপনি যখন এটি ঘুরে দেখেন তখন কোনও লেবেল বা সরঞ্জামের টিপ নেই, এটি ডানদিকে রয়েছে, "ক্লিপবোর্ডে অনুলিপি" এর ঠিক সামনের দিকে) আইকন), এবং এটি আপনাকে এমন একটি পৃষ্ঠায় নিয়ে যাবে যা সেই প্রতিশ্রুতিটির সংস্করণটির মধ্যে একটি পৃথক চিত্র দেখায় এবং আমি যা অনুমান করি তা পূর্ববর্তী সংস্করণ।
জোনাথনজেড মনিকাসকে

@ জোনাথন হ্যাঁ; সত্য সত্য
কানগাভেলু সুগুমার

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

5000 টি ফাইলের প্রতিশ্রুতিবদ্ধতার জন্য, এটি আমাকে একক-ফাইলের ভিন্নতায় নিয়ে যায় না। থেকে এই ইতিহাস থেকে যে ফাইলে ব-দ্বীপ খোঁজার চেষ্টা এই বিশাল কমিট
কার্ল ওয়ালশ

0

কমান্ড লাইন থেকে গিটহাবের দুটি কমিটের মধ্যে একটি পার্থক্য টানতে আমি একটি সহজ সুবিধার্থে স্ক্রিপ্ট একসাথে রাখতে নলটোকেনের উত্তরটি ব্যবহার করেছি

আপনি সারাংশে সম্পূর্ণ স্ক্রিপ্টটি খুঁজে পেতে পারেন তবে এখানে ভাল বিটগুলি রয়েছে:

# Parse the following patterns for repo urls to get the github repo url
# https://github.com/owner/repo-name.git
# git@github.com:owner/repo-name.git
BASE_URL="https://github.com/""$(git config --get remote.origin.url | sed 's/.*github\.com[/:]\(.*\).git/\1/')""/compare"

if [[ "$#" -eq 1 ]]; then
  if [[ "$1" =~ .*\.\..* ]]; then
    # Handle "git hubdiff fromcommit..tocommit"
    open "${BASE_URL}/$(git rev-parse "${1/\.\.*/}")...$(git rev-parse ${1/*\.\./})"
  else
    # Handle "git hubdiff fromcommit"
    open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse HEAD)"
  fi
elif [[ "$#" -eq 2 ]]; then
  # Handle "git hubdiff fromcommit tocommit"
  open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse "$2")"
fi

এটি আর্গুমেন্ট শাখা, প্রতিশ্রুতিবদ্ধ এবং এর সমাধান করা যায় এমন যে কোনও কিছু হিসাবে গ্রহণ করে git rev-parse। আমি ব্যবহার করেছি open, যা কেবল ওয়েবপৃষ্ঠাগুলি খোলার জন্য ম্যাকোস-এ কাজ করে, তাই আপনি যদি অন্য কোনও পরিবেশে থাকেন তবে আপনি এটি টুইট করতে চান।

নালটোকেনের উত্তরের মত, ডিফের মধ্যে একটি একক ফাইলের দিকে ইঙ্গিত করতে, আপনাকে অ্যাঙ্করাল স্ট্রিংটি ইউআরএল বারে প্রদর্শিত করতে ফাইলের শিরোনামে ক্লিক করতে হবে, যা আপনি অনুলিপি করতে পারবেন।


কোনও তুলনা করার জন্য অ্যাঙ্কর স্ট্রিং পাওয়ার কোনও উপায় যা পছন্দসই ফাইলটি দেখায় না কারণ তাদের মধ্যে অনেকগুলি রয়েছে?
sgarg

@sgarg অ্যাঙ্করটি "ফাইলের নামের আলাদা <md5>" - নথিভুক্ত নয় এএএফআইকে - তবে এটি আমাকে বিরক্ত করেছিল এবং আমি এটি অনুমান করেছিলাম।
বেন ওয়াল্ডিং

0

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

  1. ক্রোম ব্রাউজারগুলির জন্য ডিফ সরঞ্জামগুলি ইনস্টল করুন: https://chrome.google.com/webstore/detail/diff-tools-text-pdf-doc-o/lkcdojpmjehlniamnglpjlldkoonlomb
  2. ডিফ সরঞ্জামসমূহ খুলুন ( http://iblogbox.com/devtools/diff/ )
  3. গিটহাব থেকে পূর্বে কমিট, ট্যাগ বা শাখা যান, ফাইলটি খুলুন, তারপরে Rawকাঁচা ফাইলের ভিউ পেতে বাটনে ক্লিক করুন, সমস্তটি নির্বাচন করুন এবং অনুলিপি করুন, তারপরে ডিফ সরঞ্জামগুলিতে বাম-হাতের পাঠ্য বাক্সে রাখুন
  4. এফটার ফাইলের জন্য 3 ধাপটি পুনরাবৃত্তি করুন এবং ডিফ সরঞ্জামগুলিতে ডান হাতের বাক্সে আটকে দিন
  5. Compare Nowআপনার ডিফ্ট অ্যাড-হক ক্লিক করুন এবং সম্পাদন করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.