চেকআউট ছাড়াই গিট টান?


133

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

আমি যে গিট উদাহরণগুলি দেখতে পাচ্ছি তার সবগুলিই ইঙ্গিত করে যে আপনি প্রথমে 'চেকআউট ব্রাঞ্চনাম' চালান, তারপরে টানুন। আমি তা এড়াতে চেষ্টা করছি। আমি যেমন বলেছি, এটি একটি বিদ্যমান শাখা এবং আমি কেবল সর্বশেষ সংস্করণে আপডেট করতে চাই।


6
git fetchআপনি যা চান তা করা উচিত
ব্র্যাড

11
git fetchসেই নির্দিষ্ট দূরবর্তী শাখার ট্র্যাক করার জন্য একটি সেট আপ করা হলেও, দূরবর্তী শাখার স্থানীয় অনুলিপিটি আপডেট করবে তবে কোনও স্থানীয় শাখা নয়। এটি যা চেয়েছিল তা হতে পারে বা নাও হতে পারে। (সম্পাদনা করুন: ডিফল্টরূপে, যাইহোক। এটির পক্ষে অন্যরকম আচরণ করার জন্য এটি যুক্তি দিয়ে কল করা সম্ভব তবে সেক্ষেত্রে আর্গুমেন্টগুলি সত্যই নির্দেশ করা উচিত

2
আমি বেশ বুঝতে পারছি না ... সবাই কি ডেভ সার্ভারে একই স্থানীয় সংগ্রহস্থল ব্যবহার করছে? আপনি শাখা পরিবর্তন করতে চান না কেন? সবাই কেন নিজের ব্যক্তিগত ক্লোন তৈরি করতে পারে যাতে তারা কাজ করতে পারে? গিটটিও দেখুন : স্থানীয় শাখাটি পরীক্ষা করেই তা আপডেট করবেন?

উত্তর:


221

আমি একই জিনিসটি সন্ধান করছিলাম এবং অবশেষে এমন উত্তরটি খুঁজে পেয়েছি যা আমার জন্য অন্য স্ট্যাকওভারফ্লো পোস্টে কাজ করেছে: চেকআউটগুলি ব্যবহার না করে গিট শাখাগুলি মার্জ করুন, আপডেট করুন এবং টানুন

মূলত:

git fetch <remote> <srcBranch>:<destBranch>


উত্স শাখা নির্দিষ্ট করার পরিবর্তে উজানের শাখাটি ব্যবহার করার কোনও উপায় আছে কি?
ছদ্মবেশী

দুঃখিতভাবে, কিন্তু pullপ্যারামিটার রয়েছে fetch: না -s <strategy>, -Xsubtree=...যা আমার জন্য একটি অতীব গুরুত্বপূর্ণ ছিল, তাই এই একটি সমতুল্য প্রতিস্থাপন নয়। আমার এখানে সমস্যাটি বর্ণিত ছিল: কংগ্রুটি সার্ভিস / ব্লগ / but তবে আমার ক্ষেত্রে আমি কোনও চেকআউট চাই না।
অ্যান্ডি

2
প্রশ্নটি বিবেচনায় আনার বিষয়ে, এটি উত্তরটি পরিবর্তে হওয়া উচিত বলে মনে হচ্ছে git pull <remote> <srcBranch>:<destBranch>
জে উডচাক

যদি কমিটগুলি ইতিমধ্যে আপনার স্থানীয় ভাণ্ডারে থাকে:git fetch . origin/master:master
ইভান

74

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

এটি সম্পন্ন করার জন্য, কর্মক্ষেত্রটি বৈশিষ্ট্য শাখায় রাখুন এবং সমস্ত স্যুইচিং এড়ান, আমি এটি করি:

git fetch origin master:master

git rebase master

এবং এটি কৌশলটি সুন্দরভাবে করে।


19
এটি একটি ভাল পরামর্শ তবে শিরদাঁড়াটিকে সমাহিত করছে: নীচের উত্তরগুলি অনুসারে, যদি আপনি চালু থাকেন featureএবং সমস্ত কিছু করতে চান তবে আপনার স্থানীয়কে masterউত্সের সাথে সামঞ্জস্য রাখতে আপডেট করুন , স্পর্শ ছাড়া feature, কেবল করুন git fetch origin master:master... এবং এটি যেমন আপনি করেছেন লুকিয়ে-checkoutMaster-পুল checkoutFeature-stashPop!
বেটাউন

7
উত্স মাস্টারটিকে আপনার স্থানীয় শাখায় মার্জ করার জন্য আপনাকে স্থানীয় মাস্টারকে টানতে হবে না। আপনি ব্যবহার করতে পারেন git merge origin/master
ড্যান

-1

আপনি যদি স্থানীয় শাখার টিপসগুলির পরে পুনরায় নির্দেশ করতে চান তবে git fetchআপনার কিছু অতিরিক্ত পদক্ষেপের প্রয়োজন।

আরো concretely, অনুমান করা GitHub রেপো শাখা আছে D, B, C, এবং master(এই অদ্ভুত শাখা-নাম সেট জন্য কারণ এক মুহূর্তের মধ্যে স্পষ্ট করা হবে)। আপনি হোস্টে আছেন devhostএবং আপনি এমন একটি রেপোতে আছেন যেখানে originগিথুব রেপো রয়েছে। তুমি git fetchযা সর্বাঙ্গে বস্তু এবং আপডেট এনেছে, origin/D, origin/B, origin/C, এবং origin/master। এ পর্যন্ত সব ঠিকই. কিন্তু এখন আপনি বলতে আপনি ঘটতে কিছু, চান devhost, এর স্থানীয় শাখা D, B, C, এবং / অথবা master?

আমার এই স্পষ্ট প্রশ্ন (যাই হোক আমার কাছে):

  1. আপনি কেন সমস্ত শাখার টিপস আপডেট করতে চান ?
  2. যদি কোনও শাখায় (যেমন, B) প্রতিশ্রুতি থাকে যে রিমোট (গিথুব) রেপোর অভাব রয়েছে? এগুলি একীভূত করা, পুনর্বাসিত করা উচিত, বা ...?
  3. আপনি যদি কোনও শাখায় রয়েছেন (যেমন, C) এবং কাজের ডিরেক্টরি এবং / অথবা সূচি পরিবর্তিত হয়েছে তবে প্রতিশ্রুতিবদ্ধ নয়?
  4. যদি রিমোট রেপোতে নতুন শাখা যুক্ত থাকে ( A) এবং / অথবা শাখাগুলি মুছে ফেলা হয় ( D)?

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

অন্য কোনও উত্তর থাকলে, (২-৪) সমস্যাযুক্ত হয়ে উঠুন।

যাই হোক না কেন, দূরবর্তী রেফের উপর ভিত্তি করে স্থানীয় রেফগুলি আপডেট করার পদ্ধতি এখানে ( git fetch -pউদাহরণস্বরূপ দৌড়ানোর পরে ):

for ref in $(git for-each-ref refs/remotes/origin/ --format '%(refname)'); do
    local=${ref#refs/remotes/origin/}
    ... code here ...
done

... code here ...বিভাগে যা যায় তা প্রশ্নের উত্তরের উপর নির্ভর করে (২-৪)।


-5

ব্যবহার

git fetch

পরিবর্তে. এটি আপনার রেপোতে রিমোট রেফ এবং অবজেক্টগুলিকে আপডেট করে তবে স্থানীয় শাখা, হেড এবং ওয়ার্কট্রি একা ফেলে দেয়।


17
তবে এটি তার বিকাশ সার্ভারের স্থানীয় শাখাগুলি আপডেট করে না ... এটি কেবল g গিট ফোল্ডারে "উত্স" শাখাগুলি সতেজ করে, যা জিজ্ঞাসীর গিথুব রেপোর সাথে সামঞ্জস্য করে।
এভিনিস

1
অথবা, আপনি যদি আমার সমস্যাটির সংস্করণ চান: আমি আমার কার্যকারী শাখাটিকে "মাস্টার" এর সাথে একত্রীকরণ করতে চাই, "উত্স / মাস্টার এর ssh: // ব্লে ব্ল্লে" এর সাথে নয়। আনতে গেলে মূল / মাস্টার আপডেট হবে তবে মাস্টার নয়।
এভিনিস

-6

সম্পাদনা: 'গিট টান' ব্যবহার করুন এটি রেপো থেকে সমস্ত শাখা আনবে এবং শাখাগুলি যদি বর্তমান সিস্টেমে স্থানীয় সিস্টেমে উপস্থিত হয় তবে সর্বশেষে আপডেট হবে। দ্রষ্টব্য: গিট টান আনতে + সমষ্টির সমান যা সমস্ত শাখা আনতে পারে তবে কেবলমাত্র বর্তমান শাখাকে মার্জ করে।


6
আরও বলা ভাল: pullএকটি আনয়ন (যা হ্যাঁ, দূরবর্তী থেকে সমস্ত কিছু নিয়ে আসে) তবে কেবলমাত্র বর্তমান শাখাটি মার্জ করে ।
torek

আমার ডাউনটোটের সাথে কোনও অপরাধের উদ্দেশ্য নেই, আমি জানি যে আপনি যা বলছেন তা সঠিক এবং সত্যবাদী এবং ওপি সত্যিকার অর্থে কী টানছে (এবং আপনি তাকে সেই ব্যাখ্যা দিয়েছিলেন) সম্পর্কে নিশ্চয়তা চেয়েছিল, তবে এটি কোনও সমাধান করে না তিনি কীভাবে ছিলেন তার ক্রুक्स: প্রথমে শাখাটি চেকআউট না করেই কি আপনার স্থানীয় শাখাগুলির সাথে সম্পর্কিত রিমোট শাখায় সর্বশেষ কমিটে আপডেট করার কোনও উপায় আছে?
গুরসে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.