সবচেয়ে সাধারণ বুধবার কমান্ড গিট সমতুল্য?


90

আমি মার্চুরিয়াল ব্যবহার করছি তবে গিটের একটি দ্রুত ডেমো করতে চাই।

গিট সমতুল্য কী:

hg init . # start a project in the current directory
hg addremove # look for any added or deleted files
hg commit -m "comment" # commit any uncomitted changes
hg status # what have i changed since the last commit?

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

উত্তর:


105

গিট-এইচজি রোসেটা পাথরটি খারাপ নয়

সেখানে উল্লেখ করা হয়নি দুজনের মধ্যে আরও কয়েকটি গোটাচা রয়েছে। এই তালিকাটি আমার নিজের ব্লগ পোস্ট থেকে আঁকানো হয়েছিল যখন আমি অন্য পথে চলেছিলাম (গিট -> এইচজি)।

এইচজি .hgignore , সিনট্যাক্স: গ্লোব হ'ল গিট এর .gitignore এর মতোই আচরণ।

Git .git/config , ~/.gitconfig, ব্যবহার Git-কনফিগ মান পরিবর্তন করতে
Hg .hg/hgrc , ~/.hgrc, ব্যবহারhg help -c config

গিট git commit -v<br> এইচজি hg diff | less; hg commit

গিট gitk<br> এইচজি hg view, or thg from [TortoiseHg][1]

গিট git gui<br> এইচজি মার্চুরিয়াল জিইউআইকে চেঞ্জসেটগুলি নির্বাচন করতে পাঠায় না, কেবল কনসোল hg recordকমান্ড।

গিট git rebase<br> এইচজি এইচজি রিবেস । কারণ git rebase --interactiveএখানে এইচজি হেসেডিট , বা মার্কুরিয়াল কুইজ রয়েছে

গিট git push URL ; git remote add origin URL<br> এইচজি hg push URL; $EDITOR .hg/hgrc ; [paths] default = URL

গিট gitk, git log origin/master..HEAD<br> এইচজি hg outgoing

গিট git format-patch RANGE<br> এইচজি hg email -m filename -o

গিট git add . ; নোট করুন ডট
এইচজি hg add ; কোনও বিন্দুর প্রয়োজন নেই।

গিট git checkout REVISION-KEY<br> এইচজি hg update CHANGESET


খালি শূন্যস্থান পূরণ করার জন্য, মার্চুরিয়াল থেকে কিছু দরকারী কমান্ড:

এইচজি hg record
গিট git add -p; git commit

Hg hg Inc [URL]
গিটের কোনও বাস্তব সমতুল্য নয়। আপনি কেবল এর সমতুল্য কাজ করতে পারেনhg pull; hg log -r .:

এইচজি hg out URL
গিট দয়া করে যুক্ত করুন যদি আপনি কীভাবে জানেন।

সংহত দ্বন্দ্বের সমাধানের জন্য, hg resolveমার্চুরিয়ালে কমান্ডের কয়েকটি বিকল্প রয়েছে যা আচরণ পরিবর্তন করে:

এইচজি hg resolve -m FILE (দ্বন্দ্বের সমস্যাটি ম্যানুয়ালি সমাধানের মাধ্যমে ফাইলটিকে সমাধান করা হিসাবে চিহ্নিত করা হয়েছে)
গিট git add FILE

এইচজি hg resolve -u FILE ফাইলটি আনস্টেজ করার জন্য এই সমস্যাটি সমাধান করা
গিট হিসাবে চিহ্নিত করেছেgit reset HEAD FILE

এইচজি hg resolve -l (সমাধান করা / সমাধান না হওয়া দ্বন্দ্বের সাথে ফাইলগুলি তালিকাভুক্ত করে)
গিট git status - পরিষ্কারভাবে মার্জ হওয়া ফাইলগুলি সূচকগুলিতে স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যায়, যেগুলির বিরোধ নেই those

এইচজি hg resolve FILE (মার্জ হওয়ার পরে ফাইলটি পুনরায় মার্জ করার চেষ্টা করে) আমি জানি যে পুনরায় মার্জ করার জন্য
গিট কোনও সমতুল্য নয়।


4
সম্ভবত এটি উইকি হওয়া উচিত।
কিও

4
গিটকের জন্য মার্কুরিয়াল, এইচভিউয়ের জন্য একটি গ্রাফিকাল ক্লোন রয়েছে (নোট করুন এটি "এইচজি ভিউ" কমান্ডের চেয়ে পৃথক)
টোনিসেব্রিয়ান

4
একটি ছোট পরামর্শ: চারপাশে Hg এবং গিট পাঠ্য বদল করা (এটি মার্চুরিয়াল ব্যবহারকারীদের জন্য গিট হিসাবে)
ক্রিস এস

4
যদিও hg recordএটি খুব ব্যবহারকারী-বান্ধব নয়, hg crecord( ক্রেকার্ড এক্সটেনশান থেকে ) হ'ল একটি অভিশাপ ভিত্তিক পাঠ্য UI যা ব্যবহার করা অত্যন্ত সহজ।
ডেনিলসন সা মিয়া

4
@ ozzy432836 আমি এখন বছরের পর বছর ধরে এইচজি ব্যবহার করি নি, তবে আমি মনে করি সেগুলি সমাধানের সমতুল্য। FWIW এর ডিফল্ট ক্রিয়া hg resolveহ'ল আমি গিটকে পছন্দ করি reasons ডিফল্টরূপে hg resolveআপনার ম্যানুয়ালি মীমাংসিত সংযুক্তিকে ধ্বংস করে যদি আপনি কোনও যুক্তি না দিয়ে থাকেন!
richq

49

দ্রষ্টব্য: গিট এবং মার্কুরিয়ালের মধ্যে সবচেয়ে বড় পার্থক্যগুলির একটি হ'ল সূচক বা মঞ্চের স্পষ্ট উপস্থিতি ।

গিট ব্যবহারকারীর জন্য মার্চুরিয়াল থেকে :

গিট হ'ল একমাত্র ডিস্ট্রিবিউটেডএসসিএম যা সূচক বা মঞ্চের ক্ষেত্রের ধারণাটি প্রকাশ করে। অন্যরা এটি প্রয়োগ করতে এবং আড়াল করতে পারে, তবে অন্য কোনও ক্ষেত্রে ব্যবহারকারী সচেতন নয় এবং এটির মোকাবেলা করতে হবে না।

মার্চুরিয়ালের মোটামুটি সমতুল্য হ'ল DirState, যা পরবর্তী প্রতিশ্রুতিতে অন্তর্ভুক্ত হওয়া ফাইলগুলি নির্ধারণ করতে ওয়ার্কিং অনুলিপি স্থিতির তথ্য নিয়ন্ত্রণ করে। তবে যে কোনও ক্ষেত্রে, এই ফাইলটি স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
অতিরিক্তভাবে, কম্যান্ড লাইনে আপনি যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ করতে চান তা নির্দিষ্ট করে বা এটি ব্যবহার করে কমিট করার সময় আরও বেশি নির্বাচনী হওয়া সম্ভব RecordExtension

আপনি যদি সূচকে কাজ করতে অস্বস্তি বোধ করেন তবে আপনি আরও ভাল ;-) এ স্যুইচ করছেন


কৌশলটি হ'ল সম্পূর্ণ গিটকে কাজে লাগানোর জন্য আপনাকে সূচকটি বুঝতে হবে। ২০০ 2006 সালের মে মাসের এই নিবন্ধটি তখন আমাদের মনে করিয়ে দেয় (এবং এটি এখনও সত্য)

"আপনি যদি সূচকে অস্বীকার করেন তবে আপনি সত্যিই গিটকে অস্বীকার করবেন।"

এখন, এই নিবন্ধটিতে অনেকগুলি কমান্ড রয়েছে যা এখন ব্যবহার করা সহজ (তাই এর সামগ্রীতে খুব বেশি নির্ভর করবেন না)) তবে সাধারণ ধারণাটি রয়ে গেছে:

আপনি একটি নতুন বৈশিষ্ট্য নিয়ে কাজ করছেন এবং একটি ফাইলে সামান্য পরিবর্তন করা শুরু করেন।

# working, add a few lines
$ git add myFile
# working, another minor modification
$ git add myFile

এই মুহুর্তে, আপনার পরবর্তী প্রতিশ্রুতি বর্তমান শাখায় 2 টি সামান্য পরিবর্তন শুরু করবে

# working, making major modification for the new features
# ... damn! I cannot commit all this in the current branch: nothing would work

$ git commit

কেবলমাত্র এই সময়ে মঞ্চ অঞ্চল (সূচক) এ যুক্ত হওয়া পরিবর্তনগুলি রেকর্ড করে, বর্তমানে আপনার কার্যকরী ডিরেক্টরিতে প্রদর্শিত বড় পরিবর্তনগুলি নয়।

$ git branch newFeature_Branch
$ git add myFile

পরবর্তী প্রতিশ্রুতিবদ্ধ নতুন শাখার অন্যান্য নতুন পরিবর্তনগুলি রেকর্ড করবে 'নতুন ফ্রেস_ব্রাঞ্চ'।

এখন, ইন্টারেক্টিভভাবে যুক্ত করা বা একটি প্রতিশ্রুতি বিভক্ত করা মার্কুরিয়ালের সাথে ' hg record' কমান্ড বা অন্যান্য এক্সটেনশনের মাধ্যমে উপলব্ধ বৈশিষ্ট্যগুলি : আপনার ইনস্টল করতে হবে RecordExtension, বা CrecordExtension
তবে এটি মার্চুরিয়ালের জন্য স্বাভাবিক কর্মপ্রবাহের অংশ নয়।

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


টোনফা (প্রোফাইলে: "এইচজি দেব, পাইথনিবাদক": পরিসংখ্যান ...) মন্তব্য করেছেন,

সূচকে মৌলিকভাবে "গিট-ইশ" তেমন কিছুই নেই, এইচজি কোনও সূচককে মূল্যবান হিসাবে বিবেচনা করা যেতে পারে, বাস্তবে mqবা shelveইতিমধ্যে এর অংশটি করেছে।

ওহ ছেলে। এখানে আমরা আবার যেতে।

প্রথমত, আমি এখানে নেই যে একটি সরঞ্জাম অন্যর চেয়ে ভাল দেখায়। আমি এইচজি দুর্দান্ত, খুব স্বজ্ঞাত, একটি ভাল সমর্থন সহ (বিশেষত উইন্ডোজে, আমার মূল প্ল্যাটফর্ম, যদিও আমি লিনাক্স এবং সোলারিস 8 বা 10 তেও কাজ করি) পেয়েছি find

লিনাস টরভাল্ডস একটি ভিসিএসের সাথে যেভাবে কাজ করে তা সূচকটি আসলে সামনে এবং কেন্দ্র :

গিট প্রথম সংশ্লেষের আগেই প্রথম দিন থেকে সুস্পষ্ট সূচী আপডেট ব্যবহার করে। আমি কীভাবে সবসময় কাজ করেছি তা কেবল এটি। আমার গাছে এমন কিছু এলোমেলো প্যাচ রয়েছে যেটি আমি প্রতিশ্রুতি দিতে চাই না তার সাথে আমার নোংরা গাছ রয়েছে , কারণ এটি পরবর্তী সংস্করণের জন্য কেবল একটি মেকফাইল আপডেট

এখন সূচকের সংমিশ্রণ (যা কেবল গিতের মধ্যে দেখা যায় না এমন ধারণা) এবং "বিষয়বস্তু রাজা" দৃষ্টিকোণ এটি একেবারে অনন্য এবং "গিট-ইশ" করে তোলে :

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

দ্রষ্টব্য: "সামগ্রী" এখানে বর্ণিত হয়েছে :

গিটের সূচকটি মূলত অনেক হিসাবে সংজ্ঞায়িত

  • গাছের মোট " সামগ্রী " ধারণ করার জন্য যথেষ্ট (এবং এটি এতে সমস্ত মেটাডেটা অন্তর্ভুক্ত রয়েছে: ফাইলের নাম, মোড এবং ফাইল সামগ্রী সমস্ত "বিষয়বস্তুর" অংশ এবং এগুলি নিজেরাই অর্থহীন! )
  • সুস্পষ্ট এবং তুচ্ছ (তবে অত্যন্ত গুরুত্বপূর্ণ!) ফাইল সিস্টেমের তুলনা অপ্টিমাইজেশনের অনুমতি দেওয়ার জন্য অতিরিক্ত "স্ট্যাটাস" তথ্য।

তাই আপনি যদি সত্যিই উচিত যেমন সূচক দেখতে হচ্ছে বিষয়বস্তু

সামগ্রীটি "ফাইলের নাম" বা পৃথক অংশ হিসাবে "ফাইলের সামগ্রী" নয়। আপনি সত্যিই দুটি পৃথক করতে পারবেন না
নিজের ফাইল ফাইলের নামগুলি কোনও বুদ্ধি দেয় না (তাদের ফাইলের বিষয়বস্তুও থাকতে হবে) এবং ফাইল ফাইলগুলি নিজে থেকে একইভাবে বুদ্ধিহীন (আপনাকে কীভাবে এটি পৌঁছাতে হবে তা জানতে হবে)।

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

এফএকিউ থেকে প্রধান সুবিধা হ'ল:

  • একটি সূক্ষ্ম দানাদার সঙ্গে প্রতিশ্রুতিবদ্ধ
  • আপনাকে যথাযথ দীর্ঘ সময়ের জন্য আপনার গাছে একটি আপত্তিহীন পরিবর্তন রাখতে সহায়তা করবে
  • একটি প্রতিশ্রুতিবদ্ধকরণের জন্য কয়েকটি ছোট পদক্ষেপ সম্পাদন করুন, আপনি কী করেছেন তা git diffযাচাই করছেন এবং প্রতিটি ছোট পদক্ষেপ git addবা এর সাথে বৈধতা দিন git add -u
  • একত্রীকরণ দ্বন্দ্ব চমৎকার ব্যবস্থাপনা অনুমতি দেয়: git diff --base, git diff --ours, git diff --theirs
  • git commit --amendএর মধ্যে সূচিটি পরিবর্তন না করা হলে কেবল লগ বার্তাটি সংশোধন করার অনুমতি দেয়

আমি ব্যক্তিগতভাবে মনে করি এই আচরণটি ডিফল্ট হওয়া উচিত নয়, আপনি চান যে লোকেদের এমন কিছু প্রতিশ্রুত করা উচিত যা পরীক্ষিত বা কমপক্ষে সংকলিত

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


4
সূচকে মৌলিকভাবে "গিট-ইশ" কিছুই নেই, এইচজি কোনও সূচককে মূল্যবান হিসাবে বিবেচনা করা যেতে পারে, বাস্তবে এমকিউ বা তাকটি ইতিমধ্যে এর অংশ হিসাবে কাজ করে। আমি ব্যক্তিগতভাবে মনে করি যে এই আচরণটি ডিফল্ট হওয়া উচিত নয়, আপনি চান যে লোকেদের এমন কিছু প্রতিশ্রুত করা উচিত যা পরীক্ষিত বা কমপক্ষে সংকলিত।
টনফা

4
কি একটি গীত সূচক সম্পর্কে দেখতে stackoverflow.com/questions/4084921/...
VonC

মার্চুরিয়ালে আপনার শেষ প্রতিশ্রুতি (ধাক্কা দেওয়ার আগে) গিটের সূচকের মতো কাজ করে। আপনি এটিকে সংশোধন করতে পারেন, এটিকে আবার রোল করতে পারেন, প্রতিশ্রুতিবদ্ধ বার্তাটি পরিবর্তন করতে পারেন বা এর পর্যায়টি জনসাধারণে পরিবর্তন করে এটি চূড়ান্ত করতে পারেন।
রুসলান ইউশচেঙ্কো

12

মার্চুরিয়াল:

hg init . # start a project in the current directory
hg addremove # look for any added or deleted files
hg commit -m "comment" # commit any uncomitted changes
hg status # what have i changed since the last commit?

গিট সমতুল্য:

git init
git add -A
git commit -am "comment" # -a is not necessary along with the above add -A
git status

4
আমি (এবং আমি মনে করি অধিকাংশ গিট ব্যবহারকারী) এর git add -uচেয়ে বেশি ব্যবহার করি -A; -উ নতুন ট্র্যাক করা ফাইলগুলিকে উপেক্ষা করে সমস্ত ট্র্যাক করা ফাইলের জন্য পরিবর্তন সম্পাদন করবে।
u0b34a0f6ae

4
তবে অ্যাড্রেমোভ নতুন ট্রেড করা ফাইল যুক্ত করেছে :)
টোনফা

4
আমি এর সাথে git statusসমান নয় hg status। আমি এইচজি-তে নতুন এবং গিটের মতো এইচ.জি.এস. স্ট্যাটাসের কাজটি পরিচালনা করতে পারি নি।
Léo Léopold Hertz 준영

1

অ্যাড্রেমোভ ছাড়াই এটি প্রায় একই রকম:

git init # Start a project in the current directory
git status # Displays both changes and added/removed files
git commit -m "comment" # commit any uncommited changes

তবে, একা কাজ করার সময় এগুলি হ'ল আদেশগুলি। আপনি ঢোকা ঝরঝরে আপনি কখন অন্য লোকেদের কাজের সঙ্গে আপনার পরিবর্তনগুলি মার্জ করতে চান কাপড় git pullএবং git pushসংশ্লিষ্ট কমান্ড, এবং।


এবং এটিকে শীর্ষে রাখতে, গত প্রতিশ্রুতি থেকে আপনি কী পরিবর্তন করেছেন তা দেখতে "গিট শো" ("গিট ডিফ" হিসাবে আমি বিশ্বাস করি) ব্যবহার করুন।
PHLAK

4
"Git দেখান" (কোন args সঙ্গে) শো আপনি পরিবর্তনগুলি মধ্যে গত কমিট। "গিট ডিফ" আপনাকে শেষ প্রতিশ্রুতি দেওয়ার পরে পরিবর্তনগুলি দেখায় ।
ডাস্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.