গিট থেকে বিভ্রান্তিকর ত্রুটি বার্তা


94

আমি গীত থেকে এই বার্তাটি পেয়েছি:

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

কেউ কি এটি ব্যাখ্যা করতে পারেন? এবং আরও গুরুত্বপূর্ণ কিভাবে এটি ঠিক করতে?

উত্তর:


94

আপনাকে গিটকে বলতে হবে যে আপনি "মূল" দূরবর্তী রেপোগুলি থেকে কোন শাখাটি টানতে চান।

আমার ধারণা আপনি ডিফল্ট শাখা (মাস্টার) চান তাই git pull origin masterআপনার সমস্যার সমাধান করা উচিত।

দেখুন git help branch, git help pullএবং git help fetch আরও তথ্য জন্য।


4
এটি কাজ করতে আমাকে "মাস্টার" শাখাটি পরীক্ষা করতে হয়েছিল (কোনও শাখা বাছাই করা হয়নি) এবং টানতে হবে, যা সমস্যার সমাধান করেছে fixed
সিনেমাঙ্ক

@ সিনেক: হ্যাঁ, বর্তমান শাখারgit pull সাথে টানছে এবং একত্রিত হয় যাতে এর আচরণটি সম্পূর্ণরূপে কোন শাখাটি চেক আউট করা হয় তার উপর নির্ভর করে এবং একটি বিচ্ছিন্ন হেড (কোন শাখা চেক আউট করা হয় না), কোন শাখাটি কীভাবে টানতে হবে তা জানা উপায় নেই।
ক্যাসাবেল

@ সিনেক: আমার মনে হয়েছিল আপনি গিলে নতুন ছিলেন তাই আমি স্বীকার করেছি যে আপনি শাখা মাস্টারের উপর পুরোপুরি স্ট্যান্ডার্ড অবস্থায় আছেন, আমার খারাপ :-)।
p4bl0

86

এটি সংশোধন করার জন্য, ধরে নিই যে আপনি masterশাখায় রয়েছেন এবং নতুন যথেষ্ট গিট সংস্করণে (1.8 বা আরও নতুন) রিমোট masterথেকে শাখাটি টানতে চান origin:

git branch -u origin/master master

(আনুষাঙ্গিকভাবে অন্যান্য শাখা এবং / অথবা রিমোটগুলির জন্য))

আপনি যদি এটির সাথে ধাক্কা যোগ করতে পারেন তবে এটি আরও খাটো:

git push -u origin master

এরপরে, একটি সমতল git pull/ git pushআপনি যা প্রত্যাশা করবেন তা করবে।


গিট 1.7 সিরিজের সময়, স্যুইচ git branchছিল না -u(কেবল হয়েছে git push), এবং এর পরিবর্তে আপনাকে আরও দীর্ঘকাল ব্যবহার করতে হবে --set-upstream:

git branch --set-upstream master origin/master

তুলনায় আর্গুমেন্টের বিপরীত নোট করুন -u। আমি এই আদেশটি একাধিকবার ফাঁকি দিয়েছি।


এই সমস্ত, উপায় দ্বারা, নিম্নলিখিতগুলি করার শর্টহ্যান্ডস, যা আপনি এখনও স্পষ্টভাবে করতে পারেন:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

1.7 এর আগে আপনাকে এইভাবে এটি করতে হয়েছিল


আমি মনে করি যে শীর্ষে কমান্ডটি (অন্তত আমার গিতের সংস্করণে) "উত্স" নামে একটি শাখার উজানে সেট করে "উত্স / মাস্টার" হিসাবে। স্থানীয়ভাবে যদি আপনার শাখাটিকে "মাস্টার" বলা হয় তবে আমার মনে হয় আপনি চাইবেন:git branch --set-upstream master origin/master
ইভান ডোনভান

মজার বিষয় হল, -uবিকল্পটি git branchআমার সংস্করণে 1.8.5.3 এর জন্য নথিভুক্ত , এটির আপনার ডকুমেন্টেশনটিকে আরও গুরুত্বপূর্ণ করে তুলেছে। এবং, যেমন আপনি নোট করেছেন, বিকল্পটি 1.7 সংস্করণে অনুপলব্ধ ছিল * যেহেতু -uসংক্ষিপ্ত --set-upstream, --set-upstreamআপনি @ ইভানডোনভানের মন্তব্যের কারণে এর আর্গুমেন্টগুলির ক্রমটি কি বিপরীত হওয়া উচিত নয় ?
hobs

যাইহোক, আমি যখন আপনি যে কমান্ডটি দেখান ( git branch -u origin/master master) এটি ব্যবহার করি তা আমার জন্য প্রত্যাশিত / উদ্দেশ্য হিসাবে কাজ করে: "ব্রাঞ্চ মাস্টার সেট আপ হয়েছে রিমোট ব্রাঞ্চ মাস্টার উত্স থেকে ট্র্যাক করার জন্য।
hobs

4
@ হোবস: এটি আসলে গিটের একটি বিকৃতি। -uসুইচ আসলে না সংক্ষিপ্ত রূপকে --set-upstream। এর যুক্তির ক্রমটি কার্যকরভাবে আদেশের থেকে বিপরীত --set-upstream। আমি মনে করি এটি পরে --set-upstream-toএসেছিল ("টু নোটটি নোট করুন") চালু হয়েছিল যা -uএখন আসলে সংক্ষিপ্ত রূপ।
অ্যারিস্টটল পাগাল্টজিস

কি দারুন! বিভ্রান্তিকর। আমার জন্য এটি অবিচ্ছিন্ন করার জন্য ধন্যবাদ।
hobs

3

বার্তাটি ঠিক কী বলছে তা বলে। আপনার বর্তমান শাখাটি মূল কোনও শাখার সাথে সম্পর্কিত নয় (ট্র্যাকিং করছে না) । তাই গিট জানে না কী টানবে।

কি করো? এটা নির্ভর করে...

সর্বাধিক সাধারণ পরিস্থিতিতে আপনি কিছু স্থানীয় শাখা জাইজ বন্ধ করে দিচ্ছেন যা মাস্টারের কাছ থেকে ব্রাঞ্চ হয়েছে যা উত্সের মাস্টার থেকে ক্লোন করা আছে । এটিকে সমাধান করার স্বাভাবিক উপায় হ'ল মাস্টারটিতে স্যুইচ করা এবং এটি উত্সের সাথে সিঙ্ক্রোনাইজ করতে টানুন এবং তারপরে xyz এ ফিরে আসুন এবং rebase master

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

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