আপনার কনফিগারেশনটি দূরবর্তী থেকে <শাখার নাম> এর সাথে একত্রীকরণের জন্য নির্দিষ্ট করে, তবে এরকম কোনও রেফ আনা হয়নি?


202

আমি এই ত্রুটি টানার জন্য পাচ্ছি:

আপনার কনফিগারেশনটি রিমোট থেকে রেফ 'রেফ / হেডস / ফিচার / স্প্রিন্ট 4 / এবিসি-123-ব্রাঞ্চ' এর সাথে একত্রীকরণের জন্য নির্দিষ্ট করে, তবে এরকম কোনও রেফ আনা হয়নি।

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

আমার কনফিগারেশন ফাইলটি দেখে মনে হচ্ছে:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = <url here>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "new-develop"]
    remote = origin
    merge = refs/heads/new-develop
[branch "feature/Sprint4/ABC-123-Branch"]
    remote = origin
    merge = refs/heads/feature/Sprint4/ABC-123-Branch

আপনি মার্জটি করতে যে কমান্ডটি ব্যবহার করছেন তা ভাগ করতে পারেন?
chayচাইকা

1
এই সমস্যাটি ঘটতে পারে যখন দূরবর্তী শাখাটি মুছে ফেলা হয়। এটি সত্যিই আছে কিনা তা দুবার পরীক্ষা করে দেখুন।
বেনি নিউজবাউয়ার 11

4
ভবিষ্যতের পাঠক: আপনি যদি জানেন যে দূরবর্তী শাখাটি বিদ্যমান, আপনি কেসটি উপেক্ষা করছেন কিনা তা পরীক্ষা করে দেখুন। আমি একটি দূরবর্তী শাখা ট্র্যাক করার জন্য একটি স্থানীয় শাখা সেটআপ করেছিলাম, তবে সমস্ত ছোট হাতের অক্ষরে রিমোটটির নাম টাইপ করেছি। মূল / শাখার পরিবর্তে মূল / শাখার নাম ট্র্যাক করার জন্য স্থানীয়কে কেবল পুনরায় কনফিগার করতে হয়েছিল
জেরॅक

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

আমার গিট সার্ভারটি বাইরে ছিল। এটাই কারণ।
ডেলালাভিয়া

উত্তর:


147

কি এই মানে

আপনার উজান — আপনি যে রিমোটটি কল করেন originতার আর কোনও দিন নেই, বা কখনও কখনও হয়নি (একা এই তথ্য থেকে বলা অসম্ভব) নামে একটি শাখা রয়েছে feature/Sprint4/ABC-123-Branch। এর জন্য একটি সাধারণ কারণ রয়েছে: কেউ (সম্ভবত আপনি না, বা আপনি মনে করতে পারেন) অন্য গিট সংগ্রহস্থলের শাখাটি মুছে ফেলেছে।

কি করো

এটি আপনি যা চান তার উপর নির্ভর করে । নীচে আলোচনা বিভাগ দেখুন। আপনি পারেন:

  • রিমোটে শাখাটি তৈরি বা পুনরায় তৈরি করুন বা
  • আপনার স্থানীয় শাখা মুছুন, বা
  • অন্য কিছু আপনি মনে করতে পারেন.

আলোচনা

আপনার অবশ্যই দৌড়াতে হবে git pull(আপনি যদি চালাচ্ছিলেন তবে আপনি git mergeএকটি পৃথক ত্রুটি বার্তা পাবেন বা কোনও ত্রুটি বার্তা পাবেন না)।

আপনি যখন চালান git fetch, আপনার গিটটি আপনার কনফিগারেশনের বিভাগের urlআওতায় থাকা লাইনের ভিত্তিতে অন্য গিটের সাথে যোগাযোগ করে [remote "origin"]। এই গিট একটি কমান্ড চালায় ( upload-pack) যা অন্যান্য জিনিসের মধ্যে আপনার গিটকে সমস্ত শাখার একটি তালিকা প্রেরণ করে । git ls-remoteএটি কীভাবে কাজ করে তা দেখতে আপনি ব্যবহার করতে পারেন (এটি ব্যবহার করে দেখুন এটি শিক্ষামূলক)। এটি gitনিজের জন্য গিট সংগ্রহস্থলে চালানোর সময় আমি যা পাই তার একটি স্নিপেট এখানে দেওয়া হয়েছে:

$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f    HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b    refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f    refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1    refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6    refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638    refs/heads/todo
[snip]

refs/heads/এন্ট্রি শাখা দূরবর্তী উপস্থিত সব তালিকাবদ্ধ করে 1 সংশ্লিষ্ট বরাবর কমিট ID- র (জন্য refs/tags/এন্ট্রি ID- র ট্যাগে বাতলান পারে করে বদলে বস্তু)।

আপনার গিট এই শাখার প্রতিটি নাম নেয় এবং একই বিভাগে লাইন (গুলি) অনুযায়ী এটি পরিবর্তন করে । এই ক্ষেত্রে, আপনার গিটটি প্রতিস্থাপন করে , উদাহরণস্বরূপ। আপনার গিট এটি জুড়ে আসে এমন প্রতিটি শাখার নাম দিয়ে এটি করে।fetchremoterefs/heads/masterrefs/remotes/origin/master

এটি বিশেষ ফাইলটিতে মূল নামগুলিও রেকর্ড করে FETCH_HEAD(আপনি যদি নিজের .gitডিরেক্টরিতে দেখেন তবে আপনি এই ফাইলটি দেখতে পাবেন )। এই ফাইলটি আনা নাম এবং আইডি সংরক্ষণ করে।

git pullকমান্ড একটি সুবিধার সংক্ষিপ্ত কাটা হিসাবে বোঝানো হয়: এটা রান git fetchদূরবর্তী উপযুক্ত উপর, এবং তারপর git merge(অথবা, যদি তাই হয়, নির্দেশ git rebase) যাই হোক না কেন আর্গুমেন্ট একত্রীকরণ (অথবা রি-বেসের ফলে) প্রয়োজন হয় যেমন পরিচালিত [branch ...]অধ্যায়। এই ক্ষেত্রে, আপনার [branch "feature/Sprint4/ABC-123-Branch"]বিভাগটি আনতে বলেছে origin, তারপরে নামের অধীনে যা আইডি পাওয়া গেছে তার সাথে একত্রীকরণ করুন refs/heads/feature/Sprint4/ABC-123-Branch

যেহেতু এই নামে কিছুই পাওয়া যায় নি, git pullঅভিযোগ এবং স্টপ।

আপনি যদি এটি দুটি পৃথক পদক্ষেপ হিসাবে দৌড়েছিলেন git fetchএবং তারপরে git merge(বা git rebase), আপনার গিটটি কীভাবে remotes/origin/একত্রীভূত হবে বা কীভাবে পুনরায় চালু করতে হবে তা দেখতে আপনার ক্যাশেড রিমোট-ট্র্যাকিং শাখাগুলির দিকে তাকাবে। যদি একসময় এ জাতীয় শাখা ছিল, তবে আপনার কাছে এখনও দূরবর্তী ট্র্যাকিং শাখা থাকতে পারে। এই ক্ষেত্রে আপনি একটি ত্রুটি বার্তা পাবেন না। যদি কখনও এ জাতীয় শাখা না থাকে, বা আপনি যদি (যা মৃত রিমোট-ট্র্যাকিং শাখাগুলি সরিয়ে দেয়) git fetchদিয়ে চালিত হন --prune, যাতে আপনার কোনও সম্পর্কিত রিমোট-ট্র্যাকিং শাখা না থাকে তবে আপনি অভিযোগ পেয়ে যাবেন, তবে এটি origin/feature/Sprint4/ABC-123-Branchপরিবর্তে উল্লেখ করা হবে।

উভয় ক্ষেত্রেই , আমরা উপসংহারে পৌঁছাতে পারি যে feature/Sprint4/ABC-123-Branchনামটির প্রত্যন্ত অঞ্চলে এখন নেই origin

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


1 ওয়েল, এটি স্বীকার করে চলেছে , কমপক্ষে। তবে যতক্ষণ না তারা নির্দিষ্টভাবে কিছু রেফ লুকিয়ে রাখে, তালিকায় সমস্ত কিছুই অন্তর্ভুক্ত থাকে।


গিট পুল কমান্ড আসলে কী করে তা বোঝানোর জন্য ধন্যবাদ। আমি গিট আনতে এবং তার পরে মার্জ করে আমার সমস্যাটি সমাধান করতে সক্ষম হয়েছি।
fizch

11
অবর্তমান দূরবর্তী শাখা রেফারেন্স, ব্যবহার আপনার স্থানীয় সংগ্রহস্থলের মধ্যে মুছে ফেলার জন্যgit remote prune origin
Yoav

1
@ বেন ট্যাগ: হ্যাঁ, বা, রান git fetch --prune origin, অথবা সেট fetch.pruneকরতে trueআপনার কনফিগারেশনে (সমস্ত তিন, একই জিনিস করে যদিও গীত কয়েক সংস্করণে এগুলির কিছু বেশ নির্ভরযোগ্য ছিল না উদ্দেশ্যে হয়)।
টোকর

1
আপনার প্রয়োজন git checkout <your remote branch>এবং সব কিছু ভাল হতে হবে (কিছু ক্ষেত্রে)।
আলেকজান্ডার শিটাং

2
@ জোনাথনবেন: আপনি git branch --set-upstream-to=origin/master masterআপনার স্থানীয়টির জন্য প্রবাহের সেটিংটি স্যুইচ করতে ব্যবহার করতে পারেন master। মুছে ফেলুন এবং পুনঃনির্ধারণের পার্শ্ব প্রতিক্রিয়া হিসাবে (ধরে নিচ্ছেন আপনি এটি তৈরির জন্য ডিডব্লিউআইএম-স্টাইলটি ব্যবহার করেন git checkout master) এবং এটির সাথে আপনার masterমেলে যেতে বাধ্য করার অতিরিক্ত পার্শ্ব প্রতিক্রিয়া রয়েছে origin/master
টর্কে

71

আপনি / কেউ যদি শাখার নাম পরিবর্তন করে থাকেন তবে এটিও ঘটতে পারে। সুতরাং এই পদক্ষেপগুলি অনুসরণ করুন (যদি আপনি জানেন যে শাখার নাম পরিবর্তন করা হয়েছে) পূর্বের শাখার নাম ধরে নেওয়া wrong-branch-nameএবং কেউ এটির নাম পরিবর্তন করে correct-branch-nameতাই।

git checkout correct-branch-name

git pull (আপনি এটি দেখতে পাবেন "আপনার কনফিগারেশন নির্দিষ্ট করে ..")

git branch --unset-upstream

git push --set-upstream origin correct-branch-name

git pull (আপনি আগের বার্তাটি পাবেন না)


1
এটি এমনকি প্রয়োজনীয় git pushনয় এবং বর্তমান শাখাটি এর প্রত্যন্তের পিছনে থাকলে এটি কাজ করবে না। git pull origin correct-branch-nameযথেষ্ট।
পিয়েরে

1
উপরের দিকে সেট আপ করার আদেশটি ভুল। গিট পুলের পরে, --unset-upstream অপারেশন করুন, টানার আউটপুটে আপনি একটি ত্রুটি দেখতে পাবেন, নীচের মতো আপস্ট्रीम সেট করার কমান্ড সহ, গিট শাখা --set-upstream-to = original / <শাখা > মাইব্রাঞ্চ
অঙ্কিত মারোঠি

আমার রেপো থেকে কিছু বড় ফাইল সরানোর পরে আমার জন্য খুব সুন্দরভাবে কাজ করেছিল এবং আমি
সদ্য

40

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


4
এটা আমার জন্য একই ছিল!
অ্যারিন

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

এটি সত্য :)
মলহার পাঞ্জাবি

7

আমার কাছে এটি কেস সংবেদনশীলতার সমস্যা ছিল। আমার স্থানীয় শাখাটি Version_FEature2 এর পরিবর্তে Version_feature2 ছিল। আমি সঠিক ক্যাসিং ব্যবহার করে আমার শাখাটি পুনরায় পরীক্ষা করে দেখি এবং পরে গিট টান কাজ করে।


2
এটি আমার সমস্যাও হয়ে উঠল। মোটামুটি দীর্ঘ / জটিল শাখার নাম সহ এটি সুস্পষ্টভাবে প্রয়োজনীয় নয়।
হ্যাকন কে। ওলাফসেন

6

মূল শাখার নামটিতে কিছু ক্ষেত্রে সমস্যা থাকলে এই ত্রুটিটিও পাওয়া যেতে পারে।

উদাহরণস্বরূপ: মূল শাখাটি team1-Teamএবং স্থানীয় শাখাটি চেকআউট করা হয়েছে team1-team। তারপর, এই Tমধ্যে -Teamএবং tমধ্যে -teamএমন ত্রুটি হতে পারে। এটি আমার ক্ষেত্রে ঘটেছিল। সুতরাং, স্থানীয় শাখার নামের সাথে স্থানীয় নামটি পরিবর্তন করে ত্রুটিটি সমাধান করা হয়েছিল।


6

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

আমি করেছিলাম:

git commit -m 'first commit' // on remote branch
git pull // on local branch

4

আমার অনুরূপ ত্রুটি যখন আমার আসল কারণটি ছিল তখন আমার ডিস্কটি পূর্ণ ছিল got কিছু ফাইল মোছার পরে, git pullআমার প্রত্যাশা অনুযায়ী কাজ শুরু করে।


4

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

গিটের ক্ষেত্রে কেস-সংবেদনশীলতা বন্ধ করতে, এই কমান্ডটি চালান:

git config --global core.ignorecase true

নোট করুন যে এটি শাখার নামের চেয়ে বেশি প্রভাব ফেলবে। উদাহরণস্বরূপ, যদি আপনার একই ডিরেক্টরিতে "Foo.h" এবং "foo.h" থাকে (উইন্ডোজের জন্য সফ্টওয়্যার তৈরি করার সময় কোনও দুর্দান্ত ধারণা নয়) তবে আমি সন্দেহ করি আপনি কেস সংবেদনশীলতা বন্ধ করতে পারবেন না।


2

কেউ পরীক্ষা করে প্রত্যেকে রিমোটে মুছে ফেলেছে কিনা।


1

আমার ক্ষেত্রে, আমি মূল শাখাটি মুছে দিয়েছিলাম যা থেকে আমার বর্তমান শাখাটি এসেছে। সুতরাং .git / কনফিগারেশন ফাইলটিতে আমার ছিল:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.0.5
    rebase = false

simil2.0.5 মুছে ফেলা হয়েছে। আমি একই শাখার নাম দিয়ে এটি প্রতিস্থাপন করেছি:

[branch "simil2.1.12"]
    remote = origin
    merge = refs/heads/simil2.1.12
    rebase = false

এবং এটা কাজ করে


1

আপনি সহজেই চালিয়ে আপনার স্থানীয় শাখা প্রত্যন্তের সাথে লিঙ্ক করতে পারেন:

git checkout <your-local-branch>
git branch --set-upstream-to=origin/<correct-remote-branch> <your-local-branch>
git pull

0

আমার জন্য এটি ঘটেছিল কারণ আমি একটি ওয়েব ব্রাউজ ডিভাইস ব্যবহার করে একটি শাখা দেবকে মাস্টারের সাথে একীভূত করেছি এবং তারপরে দেব শাখায় খোলা ভিএসকোড ব্যবহার করে সিঙ্ক / টানতে চেষ্টা করেছি (

git pull
Your configuration specifies to merge with the ref 'refs/heads/dev'
from the remote, but no such ref was fetched.'

এটি বোঝায় যে এটি রেফ / হেড / দেব খুঁজে পাচ্ছে না - আমার জন্য কেবল স্থানীয় ফোল্ডারটি মুছে ফেলা এবং আবার ক্লোন করা সহজ ছিল।


0

আমার ডিস্কটি পূর্ণ ছিল যখন "গিট টান" করার সময় আমি ঠিক এই ত্রুটিটি পেয়েছি। কিছু জায়গা তৈরি করে এবং এটি আবার ঠিকঠাক কাজ শুরু করে।


0

আপনি ~/.gitconfigআপনার বাড়ির ফোল্ডারে ফাইলটি সম্পাদনা করতে পারেন । এখানেই সমস্ত - গ্লোবাল সেটিংস সংরক্ষণ করা হয়।

অথবা, ব্যবহার করুন git config --global --unset-all remote.origin.urlএবং git fetchসংগ্রহস্থল url দিয়ে চালানোর পরে ।


0

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

সুতরাং মূলত আমি বিভিন্ন শাখায় কোড পুশ করার জন্য বিভিন্ন ফোল্ডার বজায় রেখেছি।


0

আমি ঠিক একই ত্রুটি পেয়েছি, যখন আমি সঠিক কেসটি ব্যবহার করি নি। আমি 'ইন্টিগ্রেশন' চেকআউট করতে পারি। গীত git pullআমার শাখা আপডেট করার জন্য আমাকে একটি সম্পাদন করতে বলেছিল । আমি এটি করেছি, তবে উল্লিখিত ত্রুটিটি পেয়েছি। সঠিক শাখার নাম 'একীকরণ' মূলধন 'I' সহ। আমি যখন সেই শাখাটি পরীক্ষা করে দেখেছি এবং সমস্যাটি ছাড়াই এটি কাজ করেছে।


-2

যদি অন্য কোনও টান কেবল কাজ করে তবে এর অর্থ আপনার ইন্টারনেট সংযুক্ত ছিল না।


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