গিট টান এবং ক্লোন মধ্যে পার্থক্য কি?


237

(পরে mkdir repoএবং cd repo) করার মধ্যে পার্থক্য কী :

git init
git remote add origin git://github.com/cmcculloh/repo.git
git fetch --all
git pull origin master

এবং

git clone git://github.com/cmcculloh/repo.git

মানে, স্পষ্টতই একটি সংক্ষিপ্ত, তবে এগুলি ছাড়া কি তারা মূলত একই জিনিসটি করছেন?

উত্তর:


122

এগুলি মূলত একই, ক্লোন বাদে কেবলমাত্র মাস্টার নয়, অতিরিক্ত দূরবর্তী ট্র্যাকিং শাখা সেটআপ করবে। পরীক্ষা করে দেখুন man পৃষ্ঠা :

ক্লোনস একটি সদ্য নির্মিত ডিরেক্টরিতে একটি সংগ্রহস্থল ক্লোন করে রেখাযুক্ত সংগ্রহস্থলের প্রতিটি শাখার জন্য রিমোট-ট্র্যাকিং শাখা তৈরি করে (গিট ব্রাঞ্চ -r ব্যবহার করে দৃশ্যমান) এবং ক্লোনড সংগ্রহস্থলের বর্তমানে সক্রিয় শাখা থেকে কাঁটাযুক্ত একটি প্রাথমিক শাখা তৈরি করে এবং এটি পরীক্ষা করে।


10
গিট ফেচ - সমস্ত অতিরিক্ত রিমোট ট্র্যাকিং শাখা সেট আপ করে, তাই মূলত সেগুলি একই they
সে.এম.সি.কুলোহ

251

git cloneকীভাবে আপনি কাজ করতে একটি বিদ্যমান সংগ্রহস্থলের স্থানীয় অনুলিপি পাবেন। এটি কেবলমাত্র একবার প্রদত্ত সংগ্রহস্থলের জন্য ব্যবহৃত হয়, যদি না আপনি তার চারপাশের একাধিক ওয়ার্কিং কপি রাখতে চান। (বা আপনার স্থানীয় একটি জগাখিচুড়ি পরে একটি পরিষ্কার অনুলিপি পেতে চান ...)

git pull(বা git fetch+ git merge) কীভাবে আপনি সেই স্থানীয় অনুলিপিটি রিমোট রিপোজিটরি থেকে নতুন কমিটের সাথে আপডেট করেন । আপনি যদি অন্যের সাথে সহযোগিতা করে থাকেন তবে এটি একটি আদেশ যা আপনি ঘন ঘন চালাবেন।

যেমন আপনার প্রথম উদাহরণটি দেখায়, git cloneঅন্যান্য গিট কমান্ডের ভাণ্ডার দিয়ে অনুকরণ করা সম্ভব , তবে এটি git pull"মূলত একই জিনিস" git clone(বা তদ্বিপরীত) হিসাবে করছে এমনটি হয় না ।


4
গিট ক্লোনটি বিশেষত কী করছে যা "গিট টান" জড়িত আদেশগুলির ক্রম দ্বারা সম্পাদিত হয় না?
সে.মি.কুলহো

21
@ সিএমসিসিপ্লোহ: কিছুই নয় - আপনি যে ক্রমটি কার্যকরভাবে বর্ণনা করেছেন তা "গিট ক্লোন" কী করে তা সম্পাদন করে। মুল বক্তব্যটি হ'ল "গিট টান" আপনি সেখানে যা করেছেন তার বাইরেও বিভিন্ন কাজ করতে ব্যবহৃত হয় - এটি উল্লেখ করার জন্য নয় যে "গিট টান" আসলে "গিট আনতে; গিট মার্জ <বর্তমান শাখা> <উত্স / বর্তমান শাখা> "। IOW, আপনি ক্লোন ছাড়াই বাঁচতে পারেন এবং আপনি যদি সত্যিই চান তবে টানতে পারেন। আরও, আপনি ক্লোন করেছেন এমনটি ছাড়া অন্য সংগ্রহস্থলগুলি থেকে আপনি টানতে পারেন। আমি 'ক্লোন' "" আমাকে সেই রেপোর স্থানীয় অনুলিপি তৈরি করুন "এবং" টানুন "হিসাবে" কিছু নির্দিষ্ট দূরবর্তী থেকে আপডেট পেতে "হিসাবে ভাবতে চাই।
ebneter

120

সাধারণ ভাষায় আমরা বলতে পারি:

  • ক্লোন : দূরবর্তী সংগ্রহস্থলের একটি কাজের অনুলিপি পান।
  • টানুন : আমি এটি নিয়ে কাজ করছি, দয়া করে অন্যদের দ্বারা আপডেট হওয়া নতুন পরিবর্তনগুলি আমাকে পান get

3
আমি মনে করি আপনার টানুন সংজ্ঞাটি ক্লোন
হেনরিউইট

10
আপনি ক্লোন করেননি এমন কীভাবে আপনি কীভাবে কাজ করতে পারেন?
জ্যোতি প্রকাশ

আমি বুঝতে পারছি না তুমি কি বলতে চাচ্ছো?
হেনরিয়াইট

@ চেনা প্রত্যাশী, ইবনেটারের উত্তরটি আপনার প্রশ্নের সমাধান করবে
Mrk

41

git clone এর অর্থ আপনি আপনার সিস্টেমে সংগ্রহস্থলের একটি অনুলিপি তৈরি করছেন।

git fork এর অর্থ আপনি আপনার গিথুব অ্যাকাউন্টে ভান্ডারটি অনুলিপি করছেন।

git pull এর অর্থ আপনি সর্বশেষ সংশোধিত সংগ্রহস্থল আনছেন।

git push এর অর্থ আপনি এটি সংশোধন করার পরে সংগ্রহস্থলটি ফিরিয়ে দিচ্ছেন।

সাধারণ ব্যক্তির মেয়াদে:

git cloneডাউনলোড হচ্ছে এবং git pullসতেজ করছে।


9

ক্লোন : আপনার স্থানীয় মেশিনে রিমোট সার্ভারের সংগ্রহস্থল অনুলিপি করা হচ্ছে।

টানুন : আপনার স্থানীয় মেশিনে যুক্ত হওয়া নতুন পরিবর্তনগুলি পান।

এই পার্থক্য।

ক্লোন সাধারণত রিমোট রেপো অনুলিপি পেতে ব্যবহৃত হয়।

আপনি যদি দলে কাজ করছেন তবে অন্য টিম সঙ্গীদের যুক্ত কোড দেখতে পুল ব্যবহার করা হয়।


5

গিট ক্লোনটি বর্তমানে রিমোট সার্ভারের সংগ্রহস্থলে ঠিক কী কাজ করছে তা ডাউনলোড করার জন্য এবং সেই প্রকল্পটি আপনার মেশিনের ফোল্ডারে সংরক্ষণ করার জন্য ব্যবহৃত হয়। বেশিরভাগ ক্ষেত্রে এটি তখনই ব্যবহৃত হয় যখন আমরা প্রথমবারের মতো প্রকল্পটি আপলোড করতে যাব। এর পরে টানাই ভাল বিকল্প।

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


3

মিস ক্লোন: আমি স্থানীয় একটি নতুন কপি পেয়েছি।

মিস্টার পুল: আমার কাছে এটি স্থানীয়ভাবে ইতিমধ্যে রয়েছে, আমি কেবল এটি আপডেট করেছি।


মিস ক্লোন: আপনি যা করেন আমি তা করতে পারি! আপনি কেবল আমার সাবসেট।

মিঃ পুল: ডিট্টো!


মিস ক্লোন: না, আপনি তৈরি করেন না। এই আমি কি কি:

  1. খালি খালি সংগ্রহস্থল তৈরি করুন
  2. রিমোট-ট্র্যাকিং শাখাগুলি বসান ulate
  3. আর্গুমেন্ট ছাড়াই গিট ফেচ চালান

আপনি কেবল # 3 করেন, এবং তারপরে আপনি মার্জ করুন, যা আমার করার দরকার নেই (আমার টাটকা)।

মিঃ পুল: স্মার্ট প্যান্ট, কোনও বড় বিষয় নয়, আমি প্রথমে একটি "গিট থ্রি" করব! তারপরে আমরাও একই রকম। এছাড়াও বিদ্যমান রেপোগুলিতে আমার অতিরিক্ত 'মার্জ' ক্ষমতা রয়েছে! যা আমাকে গিটের মধ্যে সর্বাধিক ব্যবহৃত কমান্ড করে;)


গিট স্রষ্টা: আপনার ঘোড়াগুলি মিঃ পুলকে ধরে রাখুন, --bare বা --irror যদি ক্লোন বা init দিয়ে ব্যবহার করা হয় তবে আপনার মার্জটি ঘটবে না। এটি কেবল পঠনযোগ্য রয়েছে।


আন্ডাররেটেড উত্তর।
জুন 17:17

2

হুম, আমি যখন টানছি তখন আমি যেমন টানছি তখন দূরবর্তী শাখা "4.2" দেখতে পাওয়া যায় না? কিছু পরিষ্কারভাবে অভিন্ন নয়।

tmp$  mkdir some_repo

tmp$  cd some_repo

some_repo$  git init
Initialized empty Git repository in /tmp/some_repo/.git/

some_repo$  git pull https://github.ourplace.net/babelfish/some_repo.git
  :
From https://github.ourplace.net/babelfish/some_repo
 * branch            HEAD       -> FETCH_HEAD

some_repo$  git branch
* master

বনাম

tmp$  rm -rf some_repo

tmp$  git clone https://github.ourplace.net/babelfish/some_repo.git
Cloning into 'some_repo'...
  :
Checking connectivity... done.

tmp$  cd some_repo

some_repo$  git branch
* 4.2

আমি এটিও লক্ষ্য করেছি এবং আমি সন্দেহ করছি যে সময়ের সাথে সাথে গিটের খেলাপি পরিবর্তনের বিষয়টি ইস্যু। আমার উইন্ডোতে 1.9.5.msysgit এবং একটি ম্যাকের উপর 2.3.2-applegit-55 রয়েছে।
অ্যানিএগাইল

2

গিট ক্লোন ইউআরএল ---> সম্পূর্ণ প্রকল্প বা সংগ্রহস্থল পৃথক ডিরেক্টরি হিসাবে ডাউনলোড করা হবে। এবং পরিবর্তনগুলি কেবল গিট পুলের ইউআরএল নয় ---> আনুন + মার্জ করুন -> এটি কেবল সম্পূর্ণ পরিবর্তনগুলিই ঘটেছে এবং পুরো প্রকল্পটিই নয়


1

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

আরও পড়ুন: https://git-scm.com/book/en/v2/Git-Branching-Remote- শাখা


1
যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
একাদ

0

ক্লোন -: এটি আপনার স্থানীয় মেশিনে আপনার দূরবর্তী সংগ্রহ প্রকল্পের হুবহু অনুলিপি তৈরি করবে।

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

সুতরাং মূলত আমরা গিট ক্লোনটি কেবল একবার ব্যবহার করি যখন আমরা গিট টান বহুবার ব্যবহার করি।

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