git - 'গিট পুল' এবং 'গিট ফেচ' এর মধ্যে পার্থক্য কী?




git-pull git-fetch (20)

মডারেটর নোট: এই প্রশ্নটি ইতিমধ্যে 60 টি উত্তর পোস্ট করেছে (এদের মধ্যে কয়েকটি মুছে ফেলা হয়েছে), অন্য কোন পোস্ট করার আগে আপনি নতুন কিছু অবদান করছেন কিনা তা বিবেচনা করুন।

git pull এবং git fetch মধ্যে পার্থক্য কি?


মধ্যে পার্থক্য কি git pullএবং git fetch?

এটি বোঝার জন্য, আপনাকে প্রথমে বুঝতে হবে যে আপনার স্থানীয় গিট কেবল আপনার স্থানীয় সংগ্রহস্থলকে বজায় রাখে না, তবে এটি রিমোট রিপোজিটরির একটি স্থানীয় অনুলিপিও বজায় রাখে।

git fetchআপ টু রিমোট রিপোজিটরি আপনার স্থানীয় কপি। উদাহরণস্বরূপ, যদি আপনার রিমোট রিপোজিটরিটি GitHub হয় - আপনি রিমোট রিপোজিটরিতে যে কোনও রিমোটোরেটর এর স্থানীয় কপিতে রিমোট রিপোজিটরিতে পরিবর্তন করতে চাইতে পারেন। এটি আপনাকে তুলনা বা মার্জ হিসাবে অপারেশন সঞ্চালন করার অনুমতি দেবে।

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


বোনাস:

উপরোক্ত উত্তরের মধ্যে টান এবং fetch কথা বলতে, আমি একটি মজার কৌশল শেয়ার করতে চাই,

git pull --rebase

এই উপরের কমান্ড আমার গিট জীবনের সবচেয়ে দরকারী কমান্ড যা অনেক সময় বাঁচায়।

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

বিস্তারিত জানতে এখানে ক্লিক করুন: http://gitolite.com/git-pull--rebase


আপনি একটি রিমোট রিপোজিটরি থেকে fetch করতে পারেন, পার্থক্যগুলি দেখতে এবং তারপর টানুন বা মার্জ করুন।

এটি একটি দূরবর্তী সংগ্রহস্থলের উদাহরণ এবং একটি শাখা যা দূরবর্তী শাখা origin/master master ট্র্যাকিং নামে একটি শাখার উদাহরণ:

git checkout master                                                  
git fetch                                        
git diff origin/master
git rebase origin master


পার্থক্য কি ছিল তা বোঝার জন্য আমার একটু খরচ হয়েছিল, কিন্তু এটি একটি সহজ ব্যাখ্যা। আপনার localhost master একটি শাখা।

যখন আপনি একটি সংগ্রহস্থল ক্লোন করেন তখন আপনি স্থানীয় হোস্টে পুরো সংগ্রহস্থলটি আনেন। এর অর্থ হ'ল সেই সময়ে আপনার HEAD থেকে মূল / মাস্টার পয়েন্টার এবং একই HEAD দিকে নির্দেশকারী মাস্টার।

যখন আপনি কাজ শুরু করেন এবং সম্মতি দেন আপনি মাস্টার পয়েন্টারকে HEAD + আপনার HEAD অগ্রিম অগ্রসর করুন। কিন্তু মূল / মাস্টার পয়েন্টারটি এখনও ক্লোন করার সময় এটির দিকে নির্দেশ করে।

সুতরাং পার্থক্য হবে:

  • আপনি যদি একটি git fetch করবেন তবে এটি রিমোট রিপোজিটরি ( GitHub ) এ সমস্ত পরিবর্তন আনবে এবং মূল / মাস্টার পয়েন্টারকে HEAD সরানো হবে। এদিকে আপনার স্থানীয় শাখা মাস্টার এটা যেখানে নির্দেশ করা হবে।
  • আপনি যদি একটি git pull এটি মূলত আনতে হবে (যেমন আগে ব্যাখ্যা করা হয়েছে) এবং আপনার মাস্টার শাখায় কোনও নতুন পরিবর্তনগুলি মার্জ করুন এবং পয়েন্টারকে HEAD সরান।

সংক্ষিপ্ত এবং সহজ উত্তর যে git pull সহজভাবে git merge দ্বারা অনুসরণ git fetch হয়।

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

টানতে এবং ধাক্কা দেওয়ার পাশাপাশি, কিছু কার্যপ্রবাহের মধ্যে git rebase জড়িত থাকে, যেমন এইটি, যা আমি লিঙ্কযুক্ত নিবন্ধ থেকে তুলে ধরেছি:

git pull origin master
git checkout foo-branch
git rebase master
git push origin foo-branch

আপনি যদি এমন অবস্থায় নিজেকে খুঁজে পান, তবে আপনি git pull --rebase প্রলুব্ধ হতে পারেন। যদি না আপনি সত্যিই, আপনি কি করছেন সত্যিই জানি, আমি যে বিরুদ্ধে পরামর্শ হবে। এই সতর্কতাটি 2.3.5 git-pull 2.3.5 জন্য man পৃষ্ঠা git-pull , সংস্করণ 2.3.5 :

এটি অপারেশন একটি সম্ভাব্য বিপজ্জনক মোড। এটি ইতিহাস পুনর্লিখন করে, যা আপনি ইতিমধ্যে ইতিহাস প্রকাশিত যখন ভাল bode না। আপনি git-rebase (1) সাবধানে পড়া না থাকলে এই বিকল্পটি ব্যবহার করবেন না।


git fetch একটি ব্যবহার ক্ষেত্রে এটি আপনাকে আপনার শেষ টান থেকে রিমোট শাখায় কোনও পরিবর্তন দেখাবে ... তাই আপনি একটি প্রকৃত পুল করার আগে পরীক্ষা করতে পারেন, যা আপনার বর্তমান শাখায় ফাইলগুলি এবং কাজ কপি পরিবর্তন করতে পারে।

git fetch
git diff ...origin

git fetchরিমোট শাখাগুলি পুনরুদ্ধার করবে যাতে আপনি বর্তমান শাখার সাথে git diffবা git mergeতাদের সাথে করতে পারেন । git pullবর্তমান শাখা দ্বারা ট্র্যাক দূরবর্তী brach উপর fetch চালানো এবং তারপর ফলাফল মার্জ হবে। git fetchদূরবর্তী শাখায় কোনও আপডেট থাকলে আপনার স্থানীয় শাখার সাথে মেলামেশা করার জন্য আপনি এটি ব্যবহার করতে পারেন।


গিট আনতে

আপনি আনয়ন মাধ্যমে মূল থেকে আপনার স্থানীয় শাখায় পরিবর্তন ডাউনলোড করুন। অন্যরা যে সমস্ত কাজ করেছেন তার জন্য রিমোট রিপোকে জিজ্ঞাসা করে তবে আপনার স্থানীয় রেপোতে নেই। এই commits ডাউনলোড করুন এবং স্থানীয় সংগ্রহস্থল তাদের যোগ করুন।

গিট মার্জ

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

গিট পল

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


ঠিক আছে , এখানে git pull এবং git fetch git pull সম্পর্কে কিছু তথ্য রয়েছে, তাই আপনি প্রকৃত পার্থক্যগুলি বুঝতে পারেন ... কয়েকটি সাধারণ শব্দের মধ্যে fetch সাম্প্রতিক তথ্য পায় তবে কোড পরিবর্তিত হয় না এবং আপনার বর্তমান স্থানীয় শাখা কোডের সাথে জগতে না যায় তবে কোড পরিবর্তনগুলি পান এবং আপনার স্থানীয় শাখাটি মার্জ করুন, প্রতিটি সম্পর্কে আরো বিস্তারিত জানার জন্য পড়ুন:

গিট আনয়ন

এটি সমস্ত রেফারেন্স এবং অবজেক্ট এবং আপনার স্থানীয় রিপোজিটরিতে যেকোনো নতুন শাখা ডাউনলোড করবে ...

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

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

প্রদত্ত এবং একটি রিমোট থাকলে গিট fetch হয় একটি একক নামে রিপোজিটরি বা URL, অথবা একাধিক সংগ্রহস্থল থেকে একত্রিত করতে পারেন। কনফিগারেশন ফাইল এন্ট্রি। (গিট-কনফিগার দেখুন 1 )।

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

রেফারেন্সের নামগুলি যেগুলি বস্তুর নামগুলি নির্দেশ করে তার সাথে একত্রিত করা হয়। Git / FETCH_HEAD এ লেখা হয়। এই তথ্য স্ক্রিপ্ট বা অন্যান্য গিট কমান্ড, যেমন git-pull হিসাবে ব্যবহার করা যেতে পারে।

গিট টান

এটি দূরবর্তী থেকে বর্তমান শাখায় স্থানীয় শাখাগুলিতে পরিবর্তনগুলি প্রয়োগ করবে ...

বর্তমান শাখায় একটি রিমোট রিপোজিটরি থেকে পরিবর্তন অন্তর্ভুক্ত করা হয়। তার ডিফল্ট মোডে, গিট টান Git fetch দ্বারা FITCH_HEAD মার্জ দ্বারা অনুসরণের জন্য shorthand হয়।

আরো সঠিকভাবে, গিট পল প্রদত্ত প্যারামিটারগুলির সাহায্যে জিট আনতে এবং বর্তমান শাখায় পুনরুদ্ধারকৃত শাখার মাথাগুলিকে একত্রিত করার জন্য গিট মার্জকে কল করে। --Rebase এর সাথে, এটি গিট মার্জ পরিবর্তে গিট রিবেস চালায়।

গিট-ফেক্ট 1 হিসাবে প্রেরিত একটি দূরবর্তী সংগ্রহস্থলের নাম হওয়া উচিত। একটি নির্বিচারে দূরবর্তী রেফারেন্স (উদাহরণস্বরূপ, একটি ট্যাগের নাম) বা এমনকি রিমোট ট্র্যাকিং শাখার সাথে রেফারেন্সের সংগ্রহ নামকরণ করতে পারে (উদাহরণস্বরূপ, রেফ / হেড / রেফার / রিমোট / মূল / ), তবে সাধারণত এটির নাম রিমোট রিপোজিটরি একটি শাখা।

ডিফল্ট মান এবং git-branch --track দ্বারা নির্ধারিত বর্তমান শাখার জন্য "রিমোট" এবং "মার্জ" কনফিগারেশন থেকে পড়ানো হয়।

আমি কিভাবে git fetch এবং git pull একসঙ্গে কাজ git pull দেখানোর জন্য আপনি নীচের চাক্ষুষ তৈরি ...

1


আমরা কেবল বলি:

git pull == git fetch + git merge

যদি আপনি চালান git pull, আপনি স্থানীয় তথ্য ডেটা মার্জ করতে হবে না। আপনি যদি রান করেন git fetchতবে এর অর্থ হল git mergeআপনার স্থানীয় মেশিনে সর্বশেষ কোড পাওয়ার জন্য আপনাকে অবশ্যই চালানো উচিত । অন্যথায়, স্থানীয় মেশিন কোড মার্জ ছাড়া পরিবর্তন করা হবে না।

সুতরাং গিট গুইতে, আপনি যখন fetch করবেন, তখন আপনাকে ডেটা মার্জ করতে হবে। নিজেই আনতে আপনার স্থানীয় কোড কোড পরিবর্তন করা হবে না। আপনি যখন একবার fetch এবং দেখতে fetching করে কোডটি আপডেট করেন তখন এটি পরীক্ষা করতে পারেন; কোড পরিবর্তন হবে না। তারপর আপনি একত্রিত ... আপনি পরিবর্তন কোড দেখতে হবে।


গিট টান == (জিট fetch + গিট মার্জ)

জিট fetch স্থানীয় শাখা পরিবর্তন করে না।

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


প্রকৃতপক্ষে Git আপনার নিজস্ব কোড এবং দূরবর্তী সংগ্রহস্থলের একটি অনুলিপি বজায় রাখে।

কমান্ড git fetchরিমোট রিপোজিটরি থেকে তথ্য পেয়ে আপনার স্থানীয় অনুলিপি আপ টু ডেট করে। আমাদের এই কারণটি দরকার কারণ অন্য কেউ কোডটিতে কিছু পরিবর্তন করেছে এবং আপনি নিজেকে আপডেট রাখতে চান।

কমান্ড git pullরিমোট রিপোজিটরিতে পরিবর্তনগুলি এনে দেয় যেখানে আপনি নিজের কোড রাখেন। সাধারণত, git pullরিমোট রিপোজিটরিটির স্থানীয় অনুলিপি আপ টু ডেট করার জন্য প্রথমে এটি 'গিট ফ্যাক্ট' করে, এবং তারপরে এটি আপনার নিজের কোড সংগ্রহস্থল এবং সম্ভবত আপনার কার্যকারী অনুলিপিতে পরিবর্তনগুলি মঞ্জুর করে।


প্রারম্ভিক জন্য একটি সহজ গ্রাফিকাল প্রতিনিধিত্ব,

এখানে,

git pull  

রিপোজিটরি থেকে কোড আনতে এবং আপনার স্থানীয়দের সাথে রিবেস করতে হবে ... গিট টানতে নতুন তৈরি হওয়ার সম্ভাবনা রয়েছে।

কিন্তু ,

গিট আনয়ন

সংগ্রহস্থল থেকে কোড আনতে হবে এবং আমরা এটি ব্যবহার করে ম্যানুয়ালি রিবেজ করতে হবে git rebase

উদাহরণস্বরূপ: আমি সার্ভার মাস্টার থেকে আনতে যাচ্ছি এবং আমার স্থানীয় মাস্টারে এটি পুনরায় বিনিময় করতে যাচ্ছি।

1) গিট পুল (রিবেস স্বয়ংক্রিয়ভাবে সম্পন্ন হবে):

git pull origin master

এখানে মূল আপনার রিমোট repo মাস্টার আপনার শাখা হয়

2) জিট fetch (ম্যানুয়ালি rebase প্রয়োজন):

git fetch origin master

এটি মূল থেকে সার্ভার পরিবর্তন আনা হবে। এবং এটি আপনার স্থানীয় অবস্থায় থাকবে যতক্ষন না আপনি এটি নিজের উপর রিবেস না করেন। আমরা কোড চেক করে দ্বন্দ্ব ঠিক করতে হবে।

git rebase origin/master

এই স্থানীয় মধ্যে কোড রিবেস হবে। তার আগে আপনি সঠিক শাখায় আছেন তা নিশ্চিত করার আগে।


এই ইন্টারেক্টিভ গ্রাফিকাল উপস্থাপনাটি গিট বোঝার ক্ষেত্রে খুব সহায়ক: http://ndpsoftware.com/git-cheatsheet.html

রিমোট থেকে রিমোট থেকে আপনার স্থানীয় রিপোজিটরিতে পরিবর্তনগুলি "ডাউনলোড" git fetch করে। git pull পরিবর্তন ডাউনলোড এবং আপনার বর্তমান শাখায় তাদের মার্জ। "এর ডিফল্ট মোডে, git pull git merge FETCH_HEAD জন্য শর্ট্যান্ড্যান্ড যা git merge FETCH_HEAD করে অনুসরণ করে।"


GIT Fetch এবং GIT Pull এর মধ্যে পার্থক্যটি নিম্নলিখিত দৃশ্যকল্পের সাথে ব্যাখ্যা করা যেতে পারে: (মনে রাখবেন ছবিগুলি শব্দগুলির চেয়ে বেশি শব্দ করে !, আমি চিত্রিত উপস্থাপনা প্রদান করেছি)

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

সুতরাং, যখন আপনি আপনার স্থানীয় সংগ্রহস্থলে মূল প্রকল্পটি ফোরক করে থাকেন তখন দুটি শাখার প্রাথমিক রাজ্য এটির মতো হবে ( A, Bএবং Cমডিউলে ইতিমধ্যে প্রকল্পটি সম্পন্ন হয়)

এখন, আপনি নতুন মডিউল (অনুমান করা কাজ শুরু করেছি D) এবং আপনার পরিস্থিতির সম্পন্ন যখন Dমডিউল আপনাকে প্রধান শাখা থেকে এটি ধাক্কা চাই, কিন্তু এদিকে সেখানে কি ঘটছে আপনার সতীর্থদের এক নতুন মডিউল বিকশিত করেছেন E, Fএবং পরিবর্তন C
তাই এখন কি ঘটেছে যে আপনার স্থানীয় সংগ্রহস্থলে প্রকল্পটির মূল অগ্রগতির পিছনে অভাব রয়েছে এবং এইভাবে আপনার পরিবর্তনগুলি প্রধান শাখাতে ঠেলে দেওয়ার ফলে দ্বন্দ্ব হতে পারে এবং আপনার মডিউলটি Dত্রুটিযুক্ত হতে পারে ।

এ ধরনের সমস্যাগুলি এড়ানোর জন্য এবং প্রকল্পের মূল অগ্রগতির সাথে সমান্তরালভাবে কাজ করার জন্য দুটি উপায় রয়েছে:

1. Git Fetch- এটি আপনার স্থানীয় শাখায় উপস্থিত নয় এমন মূল / মূল শাখা প্রকল্পে করা সমস্ত পরিবর্তনগুলি ডাউনলোড করবে। এবং আপনার রিপোজিটরি বা শাখায় আনা যে পরিবর্তনগুলি প্রয়োগ করতে Git Merge কমান্ডের জন্য অপেক্ষা করবে।

তাই এখন আপনি আপনার রিপোজিটরিতে এটি মার্জ করার আগে সাবধানে ফাইলগুলি নিরীক্ষণ করতে পারেন। এবং Dপরিবর্তিত কারণে আপনি যদি সংশোধন করতে পারেন C

2. গিট পুল - এটি আপনার স্থানীয় শাখাকে মূল / মূল শাখা দিয়ে আপডেট করবে যা আসলে এটি যা করে তা Git Fetch এবং Git এর সাথে একত্রিত হয়। কিন্তু এই সংঘর্ষ ঘটতে পারে কারণ, তাই এটি একটি পরিষ্কার অনুলিপি সঙ্গে গিট পল ব্যবহার করার পরামর্শ দেওয়া হয়।


আমি পাশাপাশি এই সঙ্গে সংগ্রাম করেছেন। আসলে আমি ঠিক একই প্রশ্নের গুগল অনুসন্ধানের সাথে এখানে এসেছি। এই সমস্ত উত্তর পড়তে অবশেষে আমার মাথায় একটি ছবি আঁকেন এবং আমি এই সংস্করণটি দেখলে এটি 2 টি সংগ্রহস্থল এবং 1 টি স্যান্ডবক্সের অবস্থা এবং সময়টির সাথে সম্পাদিত ক্রিয়াকলাপগুলির দিকে তাকাতে চেষ্টা করার সিদ্ধান্ত নিয়েছি। তাই এখানে আমি সঙ্গে এসেছিলেন কি। আমি কোথাও messed যদি আমার সংশোধন করুন।

একটি আনয়ন সঙ্গে তিন repos:

---------------------     -----------------------     -----------------------
- Remote Repo       -     - Remote Repo         -     - Remote Repo         -
-                   -     - gets pushed         -     -                     -
- @ R01             -     - @ R02               -     - @ R02               -
---------------------     -----------------------     -----------------------

---------------------     -----------------------     -----------------------
- Local Repo        -     - Local Repo          -     - Local Repo          -
- pull              -     -                     -     - fetch               -
- @ R01             -     - @ R01               -     - @ R02               -
---------------------     -----------------------     -----------------------

---------------------     -----------------------     -----------------------
- Local Sandbox     -     - Local Sandbox       -     - Local Sandbox       -
- Checkout          -     - new work done       -     -                     -
- @ R01             -     - @ R01+              -     - @R01+               -
---------------------     -----------------------     -----------------------

একটি পুল সঙ্গে তিন repos

---------------------     -----------------------     -----------------------
- Remote Repo       -     - Remote Repo         -     - Remote Repo         -
-                   -     - gets pushed         -     -                     -
- @ R01             -     - @ R02               -     - @ R02               -
---------------------     -----------------------     -----------------------

---------------------     -----------------------     -----------------------
- Local Repo        -     - Local Repo          -     - Local Repo          -
- pull              -     -                     -     - pull                -
- @ R01             -     - @ R01               -     - @ R02               -
---------------------     -----------------------     -----------------------

---------------------     -----------------------     -----------------------
- Local Sandbox     -     - Local Sandbox       -     - Local Sandbox       -
- Checkout          -     - new work done       -     - merged with R02     -
- @ R01             -     - @ R01+              -     - @R02+               -
---------------------     -----------------------     -----------------------

এটি একটি fetch প্রশংসনীয় গুরুত্বপূর্ণ কেন আমাকে বুঝতে সাহায্য করে।


গিট ক্রমবর্ধমান পুরোনো কমিট নতুন commits পরে প্রয়োগ করা যাবে। এই কারণে, রিপোজিটোরির মধ্যে সঞ্চালনের কাজটি দুটি ধাপে বিভক্ত করা হয়:

  1. দূরবর্তী শাখা থেকে স্থানীয় রিপোর ভিতরে এই দূরবর্তী শাখার অনুলিপি করার জন্য নতুন কমিটির অনুলিপি করা হচ্ছে।

    (repo অপারেশন repo) [email protected] >> remote/origin/[email protected]

  2. স্থানীয় শাখা নতুন commits সংহত

    (ভিতরে-রেপ অপারেশন) remote/origin/[email protected] >> [email protected]

পদক্ষেপ 2 করার দুটি উপায় আছে। আপনি যা করতে পারেন:

  1. গত সাধারণ পূর্বপুরুষের পরে ফর্কে স্থানীয় শাখা এবং স্থানীয় রিপোজিটরির জন্য অনন্য যা কমিটির সমান্তরালভাবে নতুন কিছু যোগ করে, ফাঁকা বন্ধ করে চূড়ান্ত করা হয়।
  2. শেষ সাধারণ পূর্বপুরুষের পরে নতুন কমিটগুলি সন্নিবেশ করান এবং স্থানীয় সংগ্রহস্থলের অনন্যটি পুনরায় প্রয়োগ করুন।

ইন gitপরিভাষা, ধাপ 1 git fetch, ধাপ 2 git mergeবাgit rebase

git pullহয় git fetchএবংgit merge


git-pull - Fetch from and merge with another repository or a local branch
SYNOPSIS

git pull   …
DESCRIPTION

Runs git-fetch with the given parameters, and calls git-merge to merge the 
retrieved head(s) into the current branch. With --rebase, calls git-rebase 
instead of git-merge.

Note that you can use . (current directory) as the <repository> to pull 
from the local repository — this is useful when merging local branches 
into the current branch.

Also note that options meant for git-pull itself and underlying git-merge 
must be given before the options meant for git-fetch.

আপনি যদি ইতিহাসগুলি একত্রিত করতে চান তবে আপনি টেনে আনবেন, যদি আপনি কেবল 'কোডজ চান তবে' আনতে পারেন, কারণ কিছু ব্যক্তি এখানে কিছু নিবন্ধ ট্যাগ করেছেন।


git pull = git fetch + git merge 




git-fetch