গিট 2.6+ এর জন্য (28 সেপ্টেম্বর 2015 প্রকাশিত হয়েছে)
দ্য কেবল git config
যা আগ্রহী হবে সেটিংটি হ'ল:
rebase.autoStash
(গিট 2.27, কিউ 22020 সহ, আপনার কাছে এখন রয়েছে merge.autostash
, নীচে দেখুন)
সত্য হিসাবে সেট করা হলে, অপারেশন শুরু হওয়ার আগে স্বয়ংক্রিয়ভাবে একটি অস্থায়ী স্ট্যাশ তৈরি করুন এবং অপারেশন শেষ হওয়ার পরে এটি প্রয়োগ করুন।
এর অর্থ হ'ল আপনি কোনও নোংরা ওয়ার্কট্রিতে রিবেস চালাতে পারেন।
তবে, যত্ন সহ ব্যবহার করুন: সফল রিবেসের পরে চূড়ান্ত স্ট্যাশ অ্যাপ্লিকেশনটির কারণে অ-তুচ্ছ সংঘাত হতে পারে। মিথ্যা ডিফল্ট।
এর সাথে একত্রিত করুন:
pull.rebase
সত্য হয়ে গেলে, "গিট টান" চালানো হলে ডিফল্ট দূরবর্তী থেকে ডিফল্ট শাখাটি মার্জ করার পরিবর্তে আনীত শাখার শীর্ষে শাখাগুলি রিবেস করা হয়।
git config pull.rebase true
git config rebase.autoStash true
কোনও সরল git pull
নোংরা গাছে এমনকি কাজ করার জন্য এটি যথেষ্ট ।
সেক্ষেত্রে কোনও উলের প্রয়োজন নেই।
দেখুন 53c76dc কমিট দ্বারা (04 জুলাই 2015) কেভিন Daudt ( Ikke
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট e69b408 , 17 আগস্ট 2015)
pull
: rebase.autostash
সক্ষম হলে নোংরা গাছের অনুমতি দিন
রিবাজে পরিবর্তনগুলি যখন কোনও খারাপ কাজের গাছের সাথে দেখা হয় তখন তা স্ট্যাশ করতে শিখেছে, কিন্তু git pull --rebase
তা হয় না।
যখন rebase.autostash
সক্ষম গাছটি অসমর্থিত হয় তখনই তা যাচাই করুন ।
দ্রষ্টব্য: আপনি যদি অটোস্ট্যাশ ছাড়াই টানতে চান (যদিও rebase.autoStash true
সেট করা থাকে) তবে আপনার গিট 2.9 (জুন ২০১ 2016) রয়েছে:
pull --rebase --no-autostash
দেখুন কমিট 450dd1d , 1662297 কমিট , 44a59ff কমিট , 5c82bcd কমিট , 6ddc97c কমিট , eff960b কমিট , কমিট efa195d (02 এপ্রিল 2016), এবং f66398e কমিট , c48d73b কমিট (21 মার্চ 2016) দ্বারা তানবিরা জৈন ( mehul2029
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 7c137bb কমিট , 13 এপ্রিল 2016)
প্রতিশ্রুতিবদ্ধ f66398e বিশেষত অন্তর্ভুক্ত:
pull --rebase
: --[no-]autostash
পতাকা যুক্ত করুন
যদি rebase.autoStash
কনফিগারেশন ভেরিয়েবল সেট করা থাকে git pull --rebase
তবে কমান্ড লাইন থেকে " " ওভাররাইড করার কোনও উপায় নেই ।
শেখান " git pull --rebase
" --[no-]autostash
কম্যান্ড লাইন পাতাকার যার বর্তমান মূল্য অগ্রাহ্য rebase.autoStash
, যদি সেট করা হয়েছে। বিকল্পটি যেমন " git rebase
" বোঝে --[no-]autostash
, git rebase
তখন " git pull --rebase
" "যখন" "ডাকা হয় তখন অন্তর্নিহিত বিকল্পটি পাস করার বিষয় ।
সতর্কতা: গিট 2.14 (Q3 2017) এর আগে " git pull --rebase --autostash
" স্থানীয় ইতিহাস যখন দ্রুত প্রবাহে এগিয়ে যায় তখন " " স্বয়ংক্রিয়ভাবে স্ট্যাশ দেয় না।
দেখুন f15e7cf কমিট (01 জুন 2017) দ্বারা টিলার তাম্রকার ( tylerbrazier
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 35898ea , 05 জুন 2017)
pull
: ff --rebase --autostash
নোংরা রেপোতে কাজ করে
যখন git pull --rebase --autostash
কোনও নোংরা রিপোজিটরিতে একটি দ্রুতগতির ফলাফল ঘটে তখন কিছুই অটোস্ট্যাস করা হয় নি এবং টান ব্যর্থ হয়।
আমরা দ্রুত-ফরোয়ার্ড করতে পারলে রিবেস চালানো এড়ানোর জন্য এটি একটি শর্টকাটের কারণে ঘটেছিল, তবে সেই কোডডে অটোস্ট্যাশ উপেক্ষা করা হয়।
আপডেট করুন: Mariusz Pawelski জিজ্ঞেস মন্তব্য একটি আকর্ষণীয় প্রশ্ন:
সুতরাং প্রত্যেকে autostash
যখন আপনি রিবেস (বা pull --rebase
) করবেন তখন লিখছেন ।
আপনি যখন মার্জগুলির সাথে সাধারণ টান করেন তবে কেউ অটোস্ট্যাশিংয়ের বিষয়ে বিবেচনা করে না ।
তাহলে কি তার জন্য কোনও স্বয়ংক্রিয় সুইচ নেই? নাকি আমি কিছু মিস করছি? আমি করা পছন্দ করি git pull --rebase
তবে ওপি " স্ট্যান্ডার্ড " গিট টান সম্পর্কে জিজ্ঞাসা করে
উত্তর:
মূল থ্রেড এই autostash বৈশিষ্ট্য নিয়ে আলোচনা, এটা আসল উভয় বাস্তবায়ন করা হয় git pull
(একত্রীকরণ) এবং git pull --rebase
।
তবে ... জুনিও সি হামানো (গিট রক্ষণাবেক্ষণকারী) উল্লেখ করেছে যে:
pull-merge
সংজ্ঞা অনুসারে, এই বিষয়টিকে ট্রিগারকারী "বিরক্তি" উত্সাহিত করতে পারে এমন কিছু যদি হয় তবে সংশ্লেষের সাথে স্থানীয় পরিবর্তনটি ওভারল্যাপ হয় এবং এই অভ্যন্তরীণ "স্ট্যাশ পপ" সংযুক্তির ছোঁয়া পাথগুলিকে স্পর্শ করবে এবং এটি সম্ভবত "ড্রপড" এর ফলস্বরূপ নয় "তবে আরও বিরোধগুলি সমাধানের জন্য ছেড়ে দিন।
আমি সন্দেহ করি যে pull.autostash
কনফিগারেশনটি ভাল সংযোজন নয় কারণ এটি একটি খারাপ, ব্যথা-প্ররোচিত কর্মপ্রবাহকে উত্সাহ দেয়।
সাধারণ ক্ষেত্রে এটির ক্ষতি নাও হতে পারে, তবে স্থানীয় পরিবর্তনগুলি জটিল হলে এটি না থাকার চেয়ে সক্রিয়ভাবে আহত হবে এবং কনফিগারেশনটি বেছে নেওয়ার জন্য উত্সাহটি ছিনিয়ে নিয়েছে।
"পুল-রিবেস" এর জন্য এই সমীকরণটি কিছুটা আলাদা, কারণ "রিবাজ" আপনাকে একটি পরিষ্কার পরিচ্ছন্ন গাছ থেকে শুরু করার জন্য জোর দেয়, তাই "ডাউনলোড করুন এবং তারপরে" বিরক্তি আরও বড় মনে হয়। আমার সন্দেহ আছে যে শিথিলকরণটি আসল সমস্যার আরও কার্যকর উত্পাদন হতে পারে।
সুতরাং, একটি ক্লাসিক পুল-মার্জ সম্পর্কে, এটি আরও ভাল:
" git pull
" চালানোর আগে কার্যনির্বাহী গাছের ডাব্লুআইপি'র প্রকৃতি সম্পর্কে ভাবতে ব্যবহারকারীকে উত্সাহিত করুন " " ।
এটি কি খুব জটিল একটি প্রাণী যা অন্যরা যা করছে তার মধ্যে হস্তক্ষেপ করতে পারে, বা এটি একটি তুচ্ছ পরিবর্তন যা সে লুকিয়ে রেখে তা ফিরিয়ে আনতে পারে?
যদি প্রাক্তন হয় তবে তিনি " checkout -b
" না করা থেকে অনেক ভাল হয়ে উঠবেন, স্থানীয় পরিবর্তনটি কিছুটা আরও ভাল আকারে না নেওয়ানো অবধি কাজ চালিয়ে যান এবং মূল শাখায় যাওয়ার আগে "প্রতিশ্রুতিবদ্ধ" হন।
যদি দ্বিতীয়টি হয় তবে তিনি আরও ভাল করছেন:
- "
git pull
",
- এটি দ্বন্দ্ব খুঁজে পাওয়ার পরে, চালান
git stash
,
git merge FETCH_HEAD
এবং
git stash pop
বলা হচ্ছে, গিট 2.27 (কিউ 22020) এর সাথে, " git pull
" যখন কোনও pull.rebase
কনফিগারেশন উপস্থিত নেই তখন সতর্ক করতে শিখেছি এবং না --[no-]rebase
দেওয়াও --ff-only
হয় না (যা সংশ্লেষের ফলে ঘটবে)।
দেখুন d18c950 কমিট (10 মার্চ 2020) দ্বারা অ্যালেক্স Henrie ( alexhenrie
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 1c56d6f কমিট , 27 মার্চ 2020)
pull
: সতর্কতা অবলম্বন করুন যদি ব্যবহারকারী পুনরায় শোধ করতে হবে বা মার্জ করতে হবে তা না বলে
সাইন-অফ-বাই: অ্যালেক্স হেনরি
প্রায়শই নবাগত গিট ব্যবহারকারীরা " pull --rebase
" বলতে ভুলে যান এবং প্রবাহ থেকে অহেতুক একত্রিত হয়ে শেষ হন।
তারা সাধারণত যা চায় তা হ'ল pull --rebase
সহজ ক্ষেত্রে " pull --ff-only
" বা প্রধান ইন্টিগ্রেশন শাখাগুলির অনুলিপি আপডেট করার জন্য এবং তাদের কাজটি পৃথকভাবে পুনর্বাসিত করা। কনফিগারেশন পরিবর্তনশীল তাদের সহজ ক্ষেত্রেই সাহায্য করার জন্য বিদ্যমান, কিন্তু এই ব্যবহারকারীদের এটা সচেতন করতে কোন প্রক্রিয়া।
pull.rebase
--[no-]rebase
কমান্ড লাইন থেকে কোনও বিকল্প এবং কোনও pull.rebase
কনফিগারেশন ভেরিয়েবল না দেওয়া হলে একটি সতর্কতা বার্তা জারি করুন ।
যাঁরা কখনও " pull --rebase
" চান না , যাদের বিশেষ কিছু করতে হয়নি, তাদের অসুবিধা হবে, তবে অসুবিধার জন্য মূল্য ব্যবহারকারী হিসাবে একবার দেওয়া হয়, যা বেশ কয়েকটি নতুন ব্যবহারকারীকে সহায়তা করার জন্য একটি যুক্তিসঙ্গত ব্যয় হওয়া উচিত।
গিট 2.27 (কিউ 22020) দিয়ে, " git merge
" " --autostash
" বিকল্পটি এবং নতুন merge.autostash
সেটিংস শিখবে ।
দেখুন d9f15d3 কমিট , f8a1785 কমিট , a03b555 কমিট , 804fe31 কমিট , কমিট 12b6e13 , কমিট 0dd562e , কমিট 0816f1d , কমিট 9bb3dea , 4d4bc15 কমিট , কমিট b309a97 , f213f06 কমিট , 86ed00a কমিট , facca7f কমিট , be1bb60 কমিট , efcf6cf কমিট , c20de8b কমিট , কমিট bfa50c2 , কমিট 3442c3d , 5b2f6d9 কমিট (07 এপ্রিল 2020), 65c425a কমিট(04 এপ্রিল 2020), এবং fd6852c প্রতিশ্রুতিবদ্ধ , ডেন্টন লিউ ( ) দ্বারা 805d9ea (21 মার্চ 2020 ) প্রতিশ্রুতিবদ্ধ । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট bf10200 , 29 এপ্রিল 2020)Denton-L
gitster
pull
: মার্জ --autostash একত্রিত করতে
সাইন-অফ-বাই: ডেন্টন লিউ
আগে, --autostash
শুধুমাত্র সঙ্গে কাজ git pull --rebase
।
যাইহোক, শেষ প্যাচগুলিতে, মার্জটিও শিখেছে --autostash
তাই আমাদের আর এই বাধা থাকার কারণ নেই। একত্রীকরণের
জন্য টানতে শিখান --autostash
, ঠিক যেমন এটি পুনর্বাসনের জন্য করেছিল।
এবং:
rebase
: apply_autostash()
সিকোয়েন্সার.সি থেকে ব্যবহার করুন
সাইন-অফ-বাই: ডেন্টন লিউ
apply_autostash()
ফাংশন builtin/rebase.c
অনুরূপ যথেষ্ট apply_autostash()
ফাংশন sequencer.c
তারা প্রায় বিনিমেয়, এর ARG তারা গ্রহণ টাইপ জন্য ব্যতীত রয়েছে। করুন sequencer.c
সংস্করণ extern এবং এটি রি-বেসের ফলে তাতে ব্যবহার করুন।
রিবাজ সংস্করণটি 6defce2b02 (" বিল্টিন রিবেস: সমর্থন ) এ চালু হয়েছিল--autostash
বিকল্প", 2018-09-04, গীত v2.20.0-rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 8 ) সি রূপান্তর করার শেল অংশ হিসেবে।
এটি ফাংশনটির সদৃশ হওয়ার বিকল্পটি বেছে নিয়েছিল কারণ, সেই সময়, আরও একটি অগ্রগতি প্রকল্প ছিল যেটি ইন্টারেক্টিভ রিবেসকে শেল থেকে সিতে রূপান্তরিত করেছিল এবং তারা তাদের সাথে সংঘর্ষ করতে চায় না sequencer.c
সংস্করণটির রিফ্যাক্টরিং করে apply_autostash()
।
যেহেতু উভয় প্রচেষ্টা দীর্ঘ হয়েছে, আমরা এখনই তাদেরকে অবাধে একত্রিত করতে পারি।