স্যুইচ না করে অন্য গিট শাখার জন্য টানুন


55

আমরা সম্প্রতি এসভিএন থেকে গিতে স্যুইচ করেছি এবং একই সাথে আমাদের লাইভ সিস্টেমগুলিকে সংস্করণ নিয়ন্ত্রণে রেখেছি (স্থানীয় চেকআউট এবং লাইভে ফাইল কপির পরিবর্তে)।

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

যখন কোনও বিকাশকারী এখন লাইভে টানেন তখন তিনি সমস্ত (সম্ভবত অসম্পূর্ণ) পরিবর্তন পান।

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

আমার ধারণাটি হ'ল:

  • লাইভ ( git branch live) এ একটি নতুন শাখা তৈরি করুন ।
  • প্রতিবারই কিছু লাইভ থাকতে হয়
    • মাস্টারের পরিবর্তনগুলি টানুন (যেমন git checkout master; git pull; git checkout live:)
    • git merge master

সমস্যাটি হ'ল মাস্টারে স্যুইচ করা বা সরাসরি লাইভ সিস্টেমে সবকিছু টানলে সমস্যা দেখা দেয় তাই আমি এড়াতে পছন্দ করি।

এটি করার কোনও উপায় আছে বা লাইভ সিস্টেম পরিচালনা করার আরও ভাল কোনও উপায় আছে (ওয়েববিদের প্রশিক্ষণ ব্যতীত অসম্পূর্ণ জিনিসগুলি না চাপানো)।


git pull --allডিফল্টরূপে মাস্টারকে লাইভে টানবে না , এটি মাস্টারকে টানবে এবং এটিকে মাস্টারের সাথে একীভূত করবে এবং (সার্ভারে বিদ্যমান থাকলে) সরাসরি লাইভে রূপান্তর করতে লাইভ টানবে। তুমি কি চেষ্টা করেছ?
টোবিয়াস কেইনজলার

আপনার সমস্যা কি এমন কোনও ফাইলের কারণে হয়েছে যা সংস্করণ নিয়ন্ত্রণে ছিল না যা পরে শাখার পরে সংশোধন করার পরে লাইভ এবং গিট-অ্যাড যুক্ত করার আগে শাখা বন্ধ করে দেয়? এর আগে কি আমার ঘটেছে, সাধারণত এটা সাময়িকভাবে যে ফাইল নামান্তর করতে চলা উচিত, অথবা এটা প্রয়োজন হয় না যদি লাইভ , ব্যবহার git checkout -fসমস্যা উপেক্ষা করা - কিন্তু একটি ব্যাকআপ করা!
টোবিয়াস কেইনজলার

উত্তর:


21

আপনি git stashমাস্টার পরীক্ষা করার আগে এবং টান দেওয়ার আগে এবং সরাসরি লাইভ চেক করার পরে ব্যবহার করতে পারেন git stash pop(বা যদি আপনার গিটটি বেশি বয়স্ক git stash applyএবং git stash clearআপনি ধরে রেখেছেন যে আপনি অন্য কোনও কিছু স্টেস্ট করেন নি)


6
git pull --allসমস্ত রিমোটগুলি আনবে, তবে এটি এখনও একটি শাখা (বা ডিফল্ট শাখা) বর্তমান শাখায় মার্জ করার চেষ্টা করবে।
মিপাদি

@ মিপাদি হ্যাঁ, তবে কেবলমাত্র বর্তমান শাখাটি নিজের মধ্যেই মাস্টারকে চেকআউট করার চেষ্টা করে এবং দ্বন্দ্ব সৃষ্টি করার চেষ্টা করছে, না?
টোবিয়াস কেইনজলার

এটি বর্তমান শাখায় স্বয়ংক্রিয়ভাবে মার্জ হওয়ার জন্য যা যা শাখাটি কনফিগার করা হয়েছে তা মার্জ করবে (যদি এমন শাখাটি কনফিগার করা থাকে)।
মিপাদি

1
@ সুপেরোল এটি "সমস্ত রিমোট আনুন" হিসাবে নথিভুক্ত হয়েছে, যার মধ্যে কেবল একাধিক সংগ্রহস্থল নয়, শাখা রয়েছে। যদিও git fetch --all
দুরন্ত দৃষ্টিতে, এটির

2
@ টোবিয়াস কিইনজেলার এটি সমস্ত কনফিগার করা দূরবর্তী থেকে গিট আনতে নির্দেশ দেয়। সর্বাধিক সাধারণ ক্ষেত্রে কেবলমাত্র একটি দূরবর্তী নামের উত্স পাওয়া যায়। যদি আপনার বর্তমানের মতো একই শাখার সাথে একাধিক রিমোট থাকতে দেখা যায় এবং তারা প্রত্যেকের সাথে দ্রুত অগ্রগতির সম্পর্ক না রাখে, তখন --allবিকল্পটি ব্যবহার করে আপনাকে শাখার বিভিন্ন সংস্করণে একটি অক্টোপাস মার্জ করে দেবে ! সুতরাং আমার পরামর্শটি হ'ল --allযদি আপনি যা করেন তবে তা থেকে দূরে থাক কারণ বেশিরভাগ ক্ষেত্রে এটি আপনাকে কিছুই দেয় না।
সুপারল

74

আমি থেকে পরিবর্তন টান করতে সক্ষম হন origin/masterমধ্যে masterযখন এই কমান্ড ব্যবহার করে অন্য শাখায় কাজ:

git fetch origin master:master

6
অসাধারণ! ঠিক আমি কী খুঁজছিলাম - এটি আরও বিশদভাবে ডকুমেন্টেড হওয়া দরকার ...
মার্কাস শেফার্ড

2
আপনি এখানে ডকুমেন্টেশন পেতে পারেন: git-scm.com/docs/git-fetch#_ex উদাহরণ
c1moore


5

প্রথমে সমস্যা সমাধান করুন। তাদের কোনও শাখার দিকে ঠেলে দেওয়া উচিত নয় যেখানে তাদের কোনও ধরণের ব্যবসা নেই।

আপনি যা জিজ্ঞাসা করছেন বলে মনে হচ্ছে এটির মতো কিছু হবে

git checkout live
git pull origin master

এটি রিমোট মাস্টার এবং আপনার লাইভ ব্রাঞ্চকে একীভূত করার চেষ্টা করবে।


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

2
@ ডিবেমে: আপনি টারবল এবং প্যাচ ব্যবহার করতে পারেন। ;) যদি না তারা গিট শিখতে ইচ্ছুক না হয় (এবং এটি শাখা এবং মার্জ করা মোটেই কঠিন নয়) আপনার সমস্যা রয়েছে।
জোশ কে

0

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

সংক্ষিপ্তসার হিসাবে, প্রত্যেকের গিট রেপো পরীক্ষার রেপোর ক্লোন। লাইভ প্রোডাকশন সাইটটি টেস্টিংয়ের রেপোগুলিরও কেবল একটি ক্লোন। বিকল্পভাবে, পরীক্ষা করা লাইভ প্রোডাকিউশনের ক্লোন হতে পারে যাতে একটি "গিট পুশ" সর্বদা উত্পাদনের দিকে এগিয়ে যায়।

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

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