একটি শাখা ট্র্যাক করছে এমন রিমোটটি কীভাবে পরিবর্তন করবেন?


671

centralসংগ্রহস্থলের, একটি নতুন সার্ভারে সেট আপ করা তাই আমি আমার স্থানীয় রেপো-এ একটি নতুন দূরবর্তী নির্মিত, এবং যে পর্যন্ত পিছিয়ে দেয় ছিল।

তবে এখন যখন আমি git pullএটি করি তখন দাবি করে যে আমি আপ টু ডেট আছি। এটি ভুল — এটি আমাকে পুরানো প্রত্যন্ত শাখা সম্পর্কে বলছে , নতুনটি নয়, যা আমি জানি সত্যের জন্য নতুন প্রতিশ্রুতি আনতে হবে।

আমি কীভাবে আমার স্থানীয় শাখাটি কোনও অন্য দূরবর্তী ট্র্যাক করতে পারি?

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

[branch "master"]
    remote = oldserver
    merge = refs/heads/master

1
আমি আপনার শিরোনামটি টুইট করেছি - আপনি যে ট্র্যাকটিটি রিমোট করছেন তা বাস্তবে পরিবর্তন করার চেষ্টা করছেন, তবে এখনও এটিতে একই শাখার নাম ট্র্যাক করা হচ্ছে।
ক্যাস্যাবেল


5
এটির কোনও সদৃশ শাখা ট্র্যাককে আপনি বিদ্যমান গিট শাখাটিকে কীভাবে তৈরি করবেন তার একটি সদৃশটি বিবেচনা করা কঠিন ? । এই প্রশ্নটি উল্লেখ করে না যে শাখাটি ইতিমধ্যে একটি প্রত্যন্ত শাখা ট্র্যাক করছে। এই এক না।

1
আমার কাছে মনে হচ্ছে কনফিগার ফাইলটি সম্পাদনা করা সবচেয়ে সহজ এবং নিরাপদ উপায়
স্টিভেন লু

উত্তর:


1077

গিট v1.8.0 বা তারপরে ব্যবহার করা :

git branch branch_name --set-upstream-to your_new_remote/branch_name

অথবা আপনি -uসুইচটি ব্যবহার করতে পারেন:

git branch branch_name -u your_new_remote/branch_name

গিট v1.7.12 বা তার আগের:

git branch --set-upstream branch_name your_new_remote/branch_name


2
এটিই আমি খুঁজছিলাম - প্রদত্ত শাখার জন্য দূরবর্তী ট্র্যাকিং শাখাটি পরিবর্তন করে। ধন্যবাদ!
জোচিম

7
আহ, আমার খারাপ। আমি এটি কনফিগের মাধ্যমে এখনও করব, কারণ আপনি দুর্ঘটনাক্রমে শাখার নাম পরিবর্তন করবেন না তা নিশ্চিত হতে পারেন তবে সব ভাল। +1 টি।
ক্যাসাবেল

থেকে 1.8.0 রিলিজ নোট : Git শাখা --set-মূল প্রজেক্টের মূল / মাস্টার "এটা বলা প্রলুব্ধকর হয়েছিল" ", কিন্তু যে বলে গীত স্থানীয় শাখা ব্যবস্থা" বর্তমানে চেক আউট শাখা সাথে সংহত করতে উৎপত্তি / মাস্টার ", যা ব্যবহারকারীর অর্থ কী তা অত্যন্ত অসম্ভব The বিকল্পটি অবচয় করা হয়েছে; পরিবর্তে নতুন "--set-upstream-to" (একটি স্বল্প-মিষ্টি "-u" বিকল্প) ব্যবহার করুন ""
জারেড বেক

এত পরিষ্কার; _; আমি এত সহজেই তৈরি করা ছোট্ট জগাখিরি ঠিক করতে পারতাম! আপনাকে ধন্যবাদ =))
আদিত্য এমপি

56
যদি রিমোট ট্র্যাকিং শাখা এখনও উপস্থিত না থাকে তবে একটি বিদ্যমান রিমোট ট্র্যাকিং শাখা বর্তমানে ট্র্যাক করা থাকে তবে এটি বিদ্যমান থাকা নতুন দূরবর্তী ট্র্যাকিং শাখায় পরিবর্তন করা যাবে না। আপনাকে প্রথমে বর্তমানের দূরবর্তী ট্র্যাকিং শাখাটি আনসেট করতে হবে: git branch --unset-upstream- তারপরে এটি এই উত্তরে (বা পরবর্তীটির সাথে git push -u / --set-upstream) দেওয়া হিসাবে কাজ করবে ।
hakre

88

আমার জন্য ঠিক ছিল:

git remote set-url origin https://some_url/some_repo

তারপর:

git push

3
গিথুব এটি করতে বলে। help.github.com/articles/changing-a-remote-s-url
fsharp

18
এটি প্রকৃতপক্ষে রিমোট যেখানে রয়েছে সেখানে পরিবর্তন ঘটে না, আপনি কোন দূরবর্তীটিকে ট্র্যাক করছেন (প্রযুক্তিগতভাবে) এটি পরিবর্তন করে না - আপনি এখনও "উত্স" ট্র্যাক করছেন, এটি কেবল উত্সের সংজ্ঞাটি আপডেট করে। কিছু ব্যবহারের ক্ষেত্রে এটি খারাপ জিনিস হতে পারে। মনে করুন আপনি jQuery কাঁটাচামচ করে একটি নতুন রিমোট তৈরি করেছেন। "উত্স" আপনার কাঁটাচামচ, "আপস্ট্রিম" jQuery is তারপরে ধরুন আপনাকে নিজের কাঁটাচামড়ার পরিবর্তে অস্থায়ীভাবে মূল রেপো ট্র্যাক করতে হবে। আপনি যদি এটি ব্যবহার করেন set-urlএবং এটি সেট করতে ভুলে যান তবে ভবিষ্যতের git pushআদেশগুলি ব্যর্থ হবে
স্টিভেন্ডেসু

42

একটি আপ টু ডেট গিট (2.5.5) সহ কমান্ডটি নিম্নলিখিত:

git branch --set-upstream-to=origin/branch

এটি আপনার বর্তমান স্থানীয় শাখার জন্য রিমোট ট্র্যাক করা শাখাকে আপডেট করবে


3
আঘাত git branch --set-upstream-to=origin/developত্রুটি উত্থাপিত: error: the requested upstream branch 'origin/develop' does not exist। পূর্বে, আমি মুছে ফেলার জন্য একটি প্রত্যন্ত শাখার নামকরণ করেছি।
বেলগোরোস

1
@ বেলগোরস git fetch --allহয়ত?
গ্যাব্রিয়েল ডেভিলারস

25

যা ঘটছে তার উপর অনেক বেশি নিয়ন্ত্রণ রাখার আরেকটি বিকল্প হ'ল হাত দ্বারা আপনার কনফিগারেশনগুলি সম্পাদনা করা:

git config --edit

বা শর্টহ্যান্ড

git config -e

তারপরে ইচ্ছামত ফাইলটি সম্পাদনা করুন, সংরক্ষণ করুন এবং আপনার পরিবর্তনগুলি প্রয়োগ করা হবে।


1
এটি আমার জন্য দিনটি বাঁচিয়েছিল। ধন্যবাদ!
মার্টিন চেম্বারলিন

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

19

আপনি যদি এটি সম্পর্কে বুদ্ধিমান হন তবে কনফিগার ফাইলটির যথেষ্ট নিরাপদ সম্পাদনা করা। আপনি যদি আরও কিছু অসম্পূর্ণ হতে চান তবে আপনি এটিকে সংশোধন করার জন্য পোরসিলাইন কমান্ডটি ব্যবহার করতে পারেন:

git config branch.master.remote newserver

অবশ্যই, আপনি যদি আগে এবং পরে কনফিগারেশনটি লক্ষ্য করেন তবে আপনি দেখতে পাবেন যে এটি আপনি যা করতে যাচ্ছেন ঠিক তা করেছে।

তবে আপনার স্বতন্ত্র ক্ষেত্রে আমি যা করব তা হ'ল:

git remote rename origin old-origin
git remote rename new-origin origin

অর্থাত, যদি নতুন সার্ভারটি ক্যানোনিকাল রিমোট হতে চলেছে, তবে কেন আপনি এটিকে উত্স হিসাবে কল করবেন না কেন আপনি মূলত এটি থেকে ক্লোন করেছেন?


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

ব্যক্তিগতভাবে, আমি মনে করি এইভাবে গৃহীত উপায়ের চেয়ে ধারণাগতভাবে আরও বোধগম্য হয় তবে আমার ধারণা তারা কার্যকরভাবে সমতুল্য, সঠিক?
ইভান ডোনভান

1
@Jefromi: একটি remote renameকি যেমন উভয় দূরবর্তী নাম পরিবর্তনের জন্য জিজ্ঞাসা করা হচ্ছে করতাম না [remote]configs এবং [branch]configs। সুতরাং এই ক্ষেত্রে যেটি করা দরকার তা হ'ল কনফিগারেশন ফাইলটি সম্পাদনা করা এবং আপনি যা বলছেন তা করা (রিমোটের নামকরণ) কেবল [remote]কনফিগার লাইনে।
সুমিত পরীক

7
git fetch origin
git checkout --track -b local_branch_name origin/branch_name

অথবা

git fetch
git checkout -b local_branch_name origin/branch_name

আমার মামলার জন্য আমার দরকার ছিল git fetch। আমি বিটবাকেটে একটি নতুন শাখা তৈরি করেছি এবং এটিতে স্যুইচ করতে চেয়েছিলাম। গিট দূরবর্তী পরিবর্তন সম্পর্কে জানে না তাই আমার git fetchআগে করণীয় ছিল git checkout feature/new-feature-branch। আশাকরি ইহা অন্য কারো সাহায্য করবে।
তেলামোন এজিস্টস

6

এটি সহজতম আদেশ:

git push --set-upstream <new-origin> <branch-to-track>

উদাহরণস্বরূপ, প্রদত্ত কমান্ডটি git remote -vএমন কিছু তৈরি করে:

origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (fetch)
origin  ssh://git@bitbucket.some.corp/~myself/projectr.git (push)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (fetch)
team    ssh://git@bitbucket.some.corp/vbs/projectr.git (push)

পরিবর্তে টিম ট্র্যাকিং এ পরিবর্তন করতে:

git push --set-upstream team master

অস্পষ্ট কিছু না থাকলে ট্র্যাক করার শাখাটি alচ্ছিক। গিথুব থেকে সরে যাওয়ার সময় আমি আপনার পরামর্শটি ব্যবহার করেছি;) আপনাকে ধন্যবাদ you
gouessej

4

আপনি হয় আপনার বর্তমান শাখা মুছে ফেলতে এবং করতে পারেন:

git branch --track local_branch remote_branch

বা কনফিগারেশনে বর্তমানের সাথে রিমোট সার্ভার পরিবর্তন করুন


আমার পক্ষে কাজ করেনি, কেবলমাত্র ওমা থেকে প্রাপ্ত ওয়ার্কিং কমান্ডটি ছিল: git checkout --track -b local_branch_name origin/branch_name
সাদ বেনবউজিদ

2

সর্বশেষ গিট ডকুমেন্টেশন থেকে আমি যা বুঝি তার উপর ভিত্তি করে প্রতিশব্দটি হ'ল:

git branch -u upstream-branch local-branch
git branch --set-upstream-to=upstream-branch local-branch

এই ব্যবহারটি উর্শ্রেয়ের উত্তরের চেয়ে কিছুটা আলাদা বলে মনে হচ্ছে, যেমনটি তার সংশ্লেষণে রয়েছে:

git branch local-branch -u upstream-branch 
git branch local-branch --set-upstream-to=upstream-branch 

আমি অনুমান করছি তারা কী আবার ডকুমেন্টেশন পরিবর্তন করেছে?


1

২.7.৪ এর মতো সর্বশেষ গিট সংস্করণে ,

git checkout branch_name # ব্রাঞ্চের নাম যা আপনি ট্র্যাকিং শাখা পরিবর্তন করতে চান

git branch --set-upstream-to=upstream/tracking_branch_name # আপস্ট্রি - দূরবর্তী নাম



0

সবচেয়ে সহজ উপায় হ'ল নতুন শাখায় চাপ দেওয়া:

গিট পুশ-ইউ উত্স শাখা / নাম

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