গিট টান VS গিট আনতে Vs গিট রিবেস


294

অন্য একটি প্রশ্ন বলা git pullএকটি git fetch+ এর মত git merge

তবে git pullভিএস git fetch+ এর মধ্যে পার্থক্য কী git rebase?


2
কারও কাছে এই লিঙ্কটি পরিষ্কার করা উচিত ... এবং অন্য প্রশ্নটি কতটা ভোট পেয়েছে তাতে আমি অবাক হয়েছি।
xenoterracide

13
@ এক্সেনো: আমি মনে করি এটি "আমারও এই প্রশ্নটি ছিল" কত লোক চলে যায় তার একটি সংখ্যা মাত্র
ববোবোলো

44
কোনও দিন আমি সত্যিই গিট ডকুমেন্টেশন পড়ার জন্য সময় পাব, তবে ততক্ষণ আমি এই ধরণের প্রশ্নগুলিতে আমার ভোটগুলি যুক্ত করছি
ইরান মেডান

উত্তর:


336

আপনার প্রশ্ন থেকে এটা স্পষ্ট হওয়া উচিত যে আপনি আসলে git mergeএবং এর মধ্যে পার্থক্য সম্পর্কে জিজ্ঞাসা করছেন git rebase

সুতরাং ধরা যাক আপনি সাধারণ ক্ষেত্রে রয়েছেন - আপনি আপনার মাস্টার শাখায় কিছু কাজ করেছেন, এবং আপনি উত্স থেকেও টানছেন, যা কিছু কাজ করেছে। আনার পরে জিনিসগুলি দেখতে এরকম দেখাচ্ছে:

- o - o - o - H - A - B - C (master)
               \
                P - Q - R (origin/master)

কোনও দ্বন্দ্ব নেই বলে ধরে নিয়ে আপনি যদি এই মুহুর্তে (গিট টানার ডিফল্ট আচরণ) মার্জ করে থাকেন তবে আপনি এটিকে শেষ করবেন:

- o - o - o - H - A - B - C - X (master)
               \             /
                P - Q - R --- (origin/master)

অন্যদিকে আপনি যদি উপযুক্ত রিবেসটি করেন তবে আপনি এটি শেষ করবেন:

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

আপনার কাজের গাছের সামগ্রী উভয় ক্ষেত্রে একই রকম হওয়া উচিত; আপনি সবেমাত্র একটি আলাদা ইতিহাস তৈরি করেছেন । প্রত্যাবর্তনটি আপনার ইতিহাসকে পুনর্লিখন করে, এটিকে দেখে মনে হয় Rআপনি মূলত যেখানে প্রতিশ্রুতিবদ্ধ ছিলেন তার পরিবর্তে আপনি মূলটির নতুন মাস্টার শাখা ( ) এর শীর্ষে প্রতিশ্রুতিবদ্ধ ছিলেন H। আপনার মাষ্টার শাখা থেকে অন্য কেউ ইতিমধ্যে টানা থাকলে আপনার কখনই রিবেস পদ্ধতির ব্যবহার করা উচিত নয়।

শেষ অবধি, নোট করুন যে আপনি git pullএকটি প্রদত্ত শাখার জন্য কনফিগার প্যারামিটারটিকে branch.<name>.rebaseসত্যে সেট করে মার্জ করার পরিবর্তে রিবেস ব্যবহার করতে সেট করতে পারেন । আপনি একক টান ব্যবহার করে এটিও করতে পারেন git pull --rebase


39
কেউ যদি ইতিমধ্যে আপনার মাস্টার শাখা থেকে সরিয়ে নিয়ে যাওয়ার পরে আপনি পুনর্বাসন করতে চান তবে কি হবে? তা কি রেপো ভেঙে দেবে?
দিদিয়ের এ।

12
কেউ যদি আপনার মাস্টার শাখা থেকে টানা থাকে তবে আপনি কীভাবে জানবেন?
ফ্রাঙ্ক

29
আপনি যদি নিশ্চিতভাবে জানেন না যে কারও কাছে নেই , আপনার অবশ্যই ধরে নেওয়া উচিত যে তাদের কাছে রয়েছে।
ক্রিস ডাউন

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

1
@ স্টিভ চ্যাম্বারস না, এটি ফলাফল নয়। লাইনগুলি কেবল প্রতিশ্রুতিবদ্ধ প্রতিবেদন উপস্থাপন করে, যেমন A বি এর পিতামাতা, প্রশ্ন বা বি সময়ে প্রথম ছিল কিনা সে সম্পর্কে কোনও ধারণা নেই imp এই সমস্ত ক্রিয়াকলাপ সময় নয়, প্রতিশ্রুতিবদ্ধ গ্রাফের উপর ভিত্তি করে। রিবেস কেবল কিছু প্রতিশ্রুতি প্রতিস্থাপন করে, ফলাফল হিসাবে আমি প্রতিশ্রুতিবদ্ধ টাইমস্ট্যাম্পগুলি কী তা বিবেচনা করে দেখিয়েছি।
ক্যাসাবেল

9

TLDR:

git pullমত চলমান git fetchতারপর git merge
git pull --rebaseভালো হয় git fetchতারপরgit rebase

আপনার প্রথম বক্তব্যের জবাবে,

git pullএকটি মত হল git fetch+ + git merge

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

(রেফ: https://git-scm.com/docs/git-pull )


আপনার দ্বিতীয় বিবৃতি / প্রশ্নের জন্য:

'তবে git pullভিএস git fetch+ এর মধ্যে পার্থক্য কী? git rebase'

আবার, একই উত্স থেকে:
git pull --rebase

"--Rebase সহ, এটি গিট একীকরণের পরিবর্তে গিট রিবেস চালায়।"


এখন, যদি আপনি জিজ্ঞাসা করতে চান

'পার্থক্য mergeএবং rebase'

এখানেও তার উত্তর দেওয়া হয়েছে:
https://git-scm.com/book/en/v2/Git-Branching- রিবেসিং
(সংস্করণ ইতিহাসের রেকর্ড অনুসারে পরিবর্তন করার মধ্যে পার্থক্য)


2
আমি উল্লেখ করতে চাই যে "গিট টান --rebase" বেশিরভাগ সময় "গিট ফেচ তারপর গিট রিবেস" এর মতো - তবে সবসময় নয়। কিছু পরিস্থিতিতে, "গিট টান --rebase" আরও কিছু করে। এখানে প্রায়শই উল্লেখ করা উদাহরণটি দেখুন: gitolite.com/git-pull--rebase
ড্যানিয়েল কে।

1
আপনার উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। git fetch + git rebaseএখন থেকে কমান্ডগুলি যেভাবে কাজ করে তা আমি সত্যিই বুঝতে পারি । আমাদের গিট গাছে এখন থেকে কোনও বা কম বিরোধ নেই :) :)
ট্র্যাভিস লে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.