স্থানীয় শাখাটিকে চৌম্বকে ঠেকাতে আমি কীভাবে প্রবাহ শাখাটি সেট করব?


11

আমার মনে আছে যা থেকে, যদি আমি কোন শাখায় কাজ করি, যেমন, my-feature-branchআমি magit-statusমেনু দিয়ে এটি করতে সক্ষম হয়েছি P Pএবং তারপরে origin/my-feature-branchশীর্ষে থাকা তালিকা থেকে দূরবর্তী শাখাটি নির্বাচন করছি । এটি সুন্দরভাবে কাজ করেছে।

সম্প্রতি, এই আলোচনা হিসাবে , আমি অনুরূপ কিছু করতে পেরেছিলাম P -u e(উদ্বোধন করা magit-push-popup, --set-upstreamপতাকা স্থাপন এবং eঅন্য কোথাও ব্যবহার করে), যা একইভাবে আমাকে শুরু করা শাখাগুলির একটি তালিকা থেকে বাছাই করতে দেয় origin/my-feature-branch। এটা আমার জন্য খুব ভাল কাজ করে। এমনকি আরও সাম্প্রতিককালে, এটি আর কাজ করে না এবং আমি একটি প্রবাহ শাখা স্থাপনের সর্বোত্তম উপায় বের করতে সক্ষম হয়েছি।

আমি যখন P eএকটি শাখার দিকে ধাক্কা দেওয়ার জন্য প্রথম বিকল্পটি ব্যবহার করি তখন এটি origin/my-feature-branchযা আমি সবসময় চাই। তবে এটি origin/my-feature-branchআমার স্থানীয় শাখার জন্য প্রবাহ হিসাবে সেট করে না । ব্যবহারের P uফলে আমাকে উজানের শাখাটি বাছাই করতে দেয়, তবে origin/my-feature-branchতালিকায় নেই এবং আমাকে origin/my-feature-branchট্যাব সমাপ্তি ছাড়াই টাইপ করতে হবে (আমি জানি এটি কঠিন নয়, তবে এটি ব্যবহারকারী ত্রুটির প্রবণ, এবং কমান্ড লাইনের চেয়ে ধীর)।

এখনই কেবল একটি উজানের শাখা সেট করার একমাত্র উপায়, বা আমি কিছু হারিয়ে যাচ্ছি? আমি ইস্যু সম্পর্কিত অন্যান্য আলোচনা এবং ডকুমেন্টেশনগুলি দেখেছি, তবে আমি যে সমস্ত উত্স পেয়েছি তা পুরানো বলে মনে হচ্ছে।


1
আমি মনে করি <remote>/<branch>দুর্ভাগ্যক্রমে অংশটি প্রম্পটের বাইরে রেখে গেছে ( এই মন্তব্যটি দেখুন )। ইতিমধ্যে, আপনি magit-push-current-set-remote-if-missingশূন্য করতে পারেন ।
কাইল মায়ার 19

আমি ঠিক ঠিক করেছি। আমার নীচের উত্তরটি ঠিক করে নিয়েছে।
তারেসিয়াস

অন্যান্য কিছু সম্পর্কিত সমস্যা খুঁজে পেয়েছে এবং ঠিক করেছে। নীচের সমস্ত কিছু 100% সঠিক হওয়ার আগে আপনাকে সম্ভবত মেলপা ধরে যাওয়ার জন্য কয়েক ঘন্টা অপেক্ষা করতে হবে।
তারসিয়াস

উত্তর:


11

প্রবাহ স্থাপন করার সময় বা একই সাথে ধাক্কা না দিয়ে প্রবাহ স্থাপনের বিভিন্ন উপায় রয়েছে।

যদি magit-push-current-set-remote-if-missingতা নন- nil(ডিফল্ট) হয় তবে আপনি দেখতে পাবেন এর মতো কিছু:

Push feature to
 p pushRemote, after setting that
 u @{upstream}, after setting that
 e elsewhere

পুশ করার origin/featureএবং সেট মূল প্রজেক্টের টেপার যে uএবং তারপর RETডিফল্ট সমাপ্তি ক্যান্ডিডেট গ্রহণ করতে।

যদি magit-push-current-set-remote-if-missingতা হয় nilতবে তার পরিবর্তে আপনি এটি দেখতে পাবেন:

Push feature to
 e elsewhere

আপনি যদি pএখন টিপুন , তবে আপনাকে জানানো হবে যে প্রবাহটি কনফিগার করা নেই (বোঝা যাচ্ছে যে প্রবাহ প্রবাহ না থাকলে আপনি প্রবাহে চাপতে পারবেন না)।

তবে যদি magit-push-current-set-remote-if-missingতা হয় nil, তবে স্যুইচগুলির তালিকাটি বৈশিষ্ট্যযুক্ত হবে --set-upstream, যাতে আপনি অভ্যস্ত P - u pহিসাবে ব্যবহার করতে পারেন (দ্বিতীয় পি লোয়ারকেস বাদে)। যদিও একটি জটিলতা রয়েছে: আপনার মান পরিবর্তন করার পরে উপস্থিত বা অদৃশ্য হওয়ার magit-push-current-set-remote-if-missingজন্য --set-upstreamআপনার ইম্যাক্স পুনরায় চালু করতে হবে।

অবশেষে আপনি মূল প্রজেক্টের ব্যবহার করে নির্ধারণ করতে পারেন "সেট মূল প্রজেক্টের (এবং অন্য কিছুই না)" কমান্ড: b uorigin/masterRET। মনে রাখবেন যে আপনি যখন এই পদ্ধতির ব্যবহার করেন, তখন আপনি কেবলমাত্র একটি শাখা নির্বাচন করতে পারেন যা ইতিমধ্যে বিদ্যমান।


তবে পুশ-রিমোটটি কনফিগার করা এবং এটিতে ঠেলা ভাল। পুশ-রিমোট এবং এটি কীভাবে উপরের অংশ থেকে পৃথক হয় সে সম্পর্কে আরও জানতে, তথ্য ম্যানুয়ালটিতে ব্রাঞ্চিং নোড দেখুন (ওয়েব সংস্করণটি এখনও আপডেট হয়নি)।

মূলত প্রবাহিত শাখাটি সেই শাখা যা আপনার বৈশিষ্ট্য শাখাটি শেষ পর্যন্ত একীভূত হবে (সম্ভবত মার্জ করে বা রিবেসিংয়ের মাধ্যমে, ধাক্কা দিয়ে নয়), সম্ভবত origin/master। এবং পুশ-রিমোট হ'ল যেখানে আপনি আপনার বৈশিষ্ট্য শাখাগুলিতে এখনও কাজ করার সময় তাদের দিকে ঠেলাচ্ছেন বা অন্য কেউ যাতে তাদের মার্জ করতে পারে। স্থানীয় শাখা নামকরণ করা হয় তাহলে featureএবং পুশ-দূরবর্তী হয় my-fork, তাহলে সেই শাখা ব্যবহার ঠেলাঠেলি P pকরতে ধাক্কা হবে my-fork/feature। ("পুশ-টু-শাখা" কনফিগার করা যায় না, পুশ-রিমোটে শাখার নাম সর্বদা স্থানীয় নামের মতো থাকে))

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

আপনি যে মানটি পরিবর্তন করেছেন তা পরিবর্তিত না করে magit-push-current-set-remote-if-missingআপনি পুশ-রিমোট ব্যবহার করে কনফিগার করতে পারেন P psome-remoteRET। তবে, যেহেতু আপনি সম্ভবত সমস্ত বৈশিষ্ট্য শাখাগুলি একই দূরবর্তীটিতে চাপছেন, তাই সমস্ত শাখাগুলির জন্য একবার পুশ-রিমোট সেট করা এবং এটি দিয়ে সম্পন্ন করা ভাল: bএবং তারপরে M-pডান রিমোট নির্বাচন না হওয়া পর্যন্ত।


এছাড়াও নোট করুন যে সাধারণত প্রবাহিত শাখাটি পরিষ্কারভাবে সেট করার প্রয়োজন হবে না। আপনি যখন একটি নতুন শাখা তৈরি করেন এবং প্রারম্ভিক পয়েন্ট হিসাবে একটি দূরবর্তী শাখা নির্বাচন করেন, তবে এটি আপস্ট্রিম হিসাবে ব্যবহৃত হয়।

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

git config --global branch.autoSetupMerge always

ডিফল্ট মান হ'ল trueযার অর্থ "প্রারম্ভিক পয়েন্টটি আপ স্ট্রিম হিসাবে সেট করুন, প্রদত্ত এটি একটি দূরবর্তী শাখা"।


উপায় দ্বারা, একই ধাক্কা রিমোট প্রযোজ্য। এটিও সাধারণত "নতুন" সংগ্রহস্থলগুলিতে আধা-স্বয়ংক্রিয়ভাবে সেট করা উচিত। আপনি যদি কোনও সংগ্রহস্থল ক্লোন করেন তবে আপনাকে জিজ্ঞাসা করা হবে যে আপনি originপুশ-রিমোট হিসাবে ব্যবহার করতে চান কিনা । আপনার "হ্যাঁ" এর উত্তর দেওয়া উচিত, যদি না আপনি অন্য একটি রিমোট যুক্ত করেন, বলুন my-fork, যা ধাক্কা-রিমোট হিসাবে ব্যবহার করা উচিত। আপনি যখন একটি নতুন রিমোট ব্যবহার করে যুক্ত করেন M aএবং remote.pushDefaultএখনও সেট না করে থাকেন, তখন আপনাকে জিজ্ঞাসা করা হবে আপনি নতুন সংযুক্ত রিমোটটি পুশ-রিমোট হিসাবে ব্যবহার করতে চান কিনা।

এটি magit-clone-set-remote.pushDefaultএবং ব্যবহার করে কনফিগার করা যায় magit-remote-add-set-remote.pushDefault

আর একটি উন্নত বিকল্প হ'ল magit-branch-prefer-remote-upstream, যা ডিফল্ট হয় nil। যদি আপনি এটি সেট করে থাকেন tএবং তার পরে কোনও নতুন শাখার প্রারম্ভকালীন হিসাবে স্থানীয় একটি শাখা নির্বাচন করেন, তবে প্রারম্ভ-পয়েন্টের আপস্র্যামটি (কিছু নিয়ম অনুসারে ডক-স্ট্রিং দেখুন) এর পরিবর্তে প্রবাহ হিসাবে ব্যবহৃত হবে সূচনা পয়েন্ট নিজেই।

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