এর ডিফল্ট মোডে, গিট টান গিট আনার জন্য শর্টহ্যান্ড এবং তার পরে গিট মার্জ FETCH_HEAD হয়।
আপনি যখন এটি করেন git pull origin master,
git pullএকটি মার্জ সম্পাদন করে যা প্রায়শই মার্জ কমিট তৈরি করে। অতএব, ডিফল্টরূপে, রিমোট থেকে আঁকা কোনও ক্ষতিকারক ক্রিয়াকলাপ নয়: এটি একটি নতুন প্রতিশ্রুতি তৈরি করতে পারে যা এর আগে ছিল না। এই আচরণটি একজন ব্যবহারকারীকে বিভ্রান্ত করতে পারে, কারণ এটির মতো নিরীহ ডাউনলোড অপারেশন হওয়া উচিত বলে মনে করে আসলে প্রতিশ্রুতিবদ্ধ ইতিহাসকে অবিশ্বাস্য উপায়ে পরিবর্তন করে।
এটি এড়াতে আপনার প্রয়োজন
git pull --ff-only
(বা না? কোনটি আপনার প্রয়োজনের সাথে খাপ খায় তা দেখতে পড়ুন)
এর সাথে git pull --ff-only, গিট আপনার শাখাটি কেবলমাত্র নতুন কমিট তৈরি না করেই "দ্রুত অগ্রসর" হতে পারে যদি আপডেট করে update যদি এটি করা না যায় তবে git pull --ff-onlyকেবল একটি ত্রুটি বার্তা দিয়ে বাতিল করা।
আপনি সর্বদা --ff-onlyডিফল্টরূপে ব্যবহার করতে আপনার গিট ক্লায়েন্টকে কনফিগার করতে পারেন , তাই আপনি কমান্ড-লাইন পতাকাটি ভুলে গেলেও আপনি এই আচরণটি পান:
git config --global pull.ff only
দ্রষ্টব্য: --globalপতাকাটি আপনার মেশিনের সমস্ত সংগ্রহস্থলের পরিবর্তনের জন্য প্রয়োগ করে। আপনি যদি কেবল সেই ভাণ্ডারের জন্যই এই আচরণটি চান তবে পতাকাটি বাদ দিন।
এখান থেকে নেওয়া হয়েছে
এই সতর্কতাটি গিত ২.২27-এ যুক্ত করা হয়েছিল, যেমন জো তার উত্তরে উল্লেখ করেছিল।
সম্পূর্ণ সতর্কতাটি এটির মতো দেখাচ্ছে:
কীভাবে ডাইভারজেন্ট শাখাগুলির পুনর্মিলন করা যায় তা নির্দিষ্ট করে না টানলে নিরুৎসাহিত করা হয়। আপনি নিম্নলিখিত বার্তাটি আপনার পরবর্তী টানার কিছু আগে চালিয়ে এই স্প্ল্যাচ করতে পারেন:
গিট কনফিগার পুল। রিবেস মিথ্যা # মার্জ (ডিফল্ট কৌশল)
গিট কনফিগার পুল.রেবাস সত্য #
রিবাজে গিট কনফিগার পুল.এফ কেবল # ফাস্ট-ফরোয়ার্ড
সমস্ত সংগ্রহস্থলের জন্য ডিফল্ট পছন্দ নির্ধারণ করতে আপনি "গিট কনফিগারেশন" "গিট কনফিগারেশন - গ্লোবাল" দিয়ে প্রতিস্থাপন করতে পারেন। আপনি অনুরোধ অনুযায়ী কনফিগার করা ডিফল্টকে ওভাররাইড করতে --rebase, --no-rebase, বা --ff- কেবল কমান্ড লাইনেই পাস করতে পারেন।
সতর্কতাটি তিনটি কমান্ডকে বিকল্প হিসাবে উপস্থাপন করে, এগুলি সমস্ত সতর্কতা দমন করবে। তবে তারা বিভিন্ন উদ্দেশ্যে পরিবেশন করে:
git config pull.rebase false # merge (the default strategy)
এটি ডিফল্ট আচরণ রাখে এবং সতর্কতা দমন করে।
git config pull.rebase true # rebase
এটি বাস্তবে দূরবর্তী শাখার শীর্ষে প্রতিশ্রুতিবদ্ধ হয়, স্থানীয় এবং দূরবর্তীভাবে উভয়ই একক শাখা বজায় রাখে (দুটি পৃথক শাখা জড়িত - ডিফল্ট আচরণের বিপরীতে যেখানে একটি স্থানীয় এবং অন্যটি রিমোটে থাকে - এবং দুটি সংযুক্ত করার জন্য, একত্রিত করা হয়) )।
git config pull.ff only # fast-forward only
স্থানীয় শাখাটি দ্রুত অগ্রসর করা সম্ভব হলে এটি কেবল টানটি সম্পাদন করে। যদি তা না হয় তবে এটি কেবল একটি ত্রুটি বার্তা (এবং কোনও কমিট তৈরি করে না) দিয়ে বাতিল করে।
হালনাগাদ:
আপনি যদি Git 2.29অথবা উপরে, আপনি এখন সেট করতে পারেন pull.ffথেকে false, trueবা onlyসতর্কবার্তা পরিত্রাণ পেতে।
git config pull.ff
true- এটি ডিফল্ট আচরণ. সম্ভব হলে টানুন দ্রুত-ফরওয়ার্ড করা হয়, অন্যথায় এটি মার্জ হয়ে যায়।
git config pull.ff false
false - টান কখনও দ্রুত অগ্রসর হয় না, এবং একটি মার্জ সর্বদা তৈরি করা হয়।
git config pull.ff only
only - সম্ভব হলে টানুন দ্রুত ফরোয়ার্ড করা হয়, অন্যথায় ত্রুটি বার্তা দিয়ে অপারেশন বাতিল করা হয়।