গিট শাখার নামে স্ল্যাশ অক্ষর ব্যবহার করে


222

আমি নিশ্চিত যে আমি কোথাও একটি জনপ্রিয় গিট প্রকল্পে দেখেছি শাখাগুলির "বৈশিষ্ট্য / এক্সওয়াইজেড" এর মতো একটি প্যাটার্ন ছিল।

তবে আমি যখন স্ল্যাশ চরিত্রের সাথে একটি শাখা তৈরি করার চেষ্টা করি তখন আমি একটি ত্রুটি পাই:

$ git branch labs/feature
error: unable to resolve reference refs/heads/labs/feature: Not a directory
fatal: Failed to lock ref for update: Not a directory

(আমার প্রাথমিক প্রচেষ্টা) এর জন্য একই সমস্যা:

$ git checkout -b labs/feature

কীভাবে একজন স্ল্যাশ চরিত্রের সাহায্যে গিতে একটি শাখা তৈরি করতে পারে?

git  branch 

1
আসলে দেখে মনে হচ্ছে আপনার নিজের সমস্যা আছে HEAD। দেখে মনে হচ্ছে গিটটি আপনার HEADশাখায় একটি লিঙ্ক labs/featureযা তৈরি হয়নি। এটি কীভাবে ঘটতে পারে তা আমি জানিনা, তবে এর অর্থ হল যে আপনার শাখা তৈরির চেষ্টা foo/barএটি ভিত্তিক নামে পরিচিত , এটি কাজ করছে না। আপনার HEADআনস্টাক কীভাবে এসেছিল?
সিবি বেইলি

আমি বিভ্রান্তির জন্য দুঃখিত, এর "ল্যাবস / বৈশিষ্ট্য", "ফু / বার" নয়, সম্পাদিত উদাহরণ।

স্ল্যাশের আগে এফডব্লিউআইডাব্লু কিছু হ'ল একটি ডিরেক্টরি তৈরি করবে .git/refs/headsযেমন আপনি যদি git checkout -b feature/123আপনার projectRootFolder/.git/refs/headsডিরেক্টরিতে থাকেন তবে আপনি নামের একটি ডিরেক্টরি দেখতে পাবেন: featureযেখানে সেই ডিরেক্টরিতে আপনি একটি শাখা দেখতে পাবেন 123। পরে আপনি যদি ডিরেক্টরিতে অন্যটি তৈরি করেন feature/124তবে featureআপনি একটি শাখা দেখতে পাবেন124
হানি

:-D "আসলে দেখে মনে হচ্ছে আপনার HEAD" চমৎকার একটি @ সিসিবিএইলি
কেন্ট বুলের সাথে

উত্তর:


222

আপনি কি নিশ্চিত যে শাখা labsইতিমধ্যে বিদ্যমান নেই ( এই থ্রেড হিসাবে )?

আপনার কাছে ফাইল এবং একই নামে একটি ডিরেক্টরি উভয়ই থাকতে পারে।

আপনি মূলত এটি করার জন্য গিট পাওয়ার চেষ্টা করছেন:

% cd .git/refs/heads
% ls -l
total 0
-rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 labs
-rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 master
% mkdir labs
mkdir: cannot create directory 'labs': File exists

আপনি "ডিরেক্টরি তৈরি করতে পারবেন না" ত্রুটির সমতুল্য হচ্ছেন।
আপনার যখন এটিতে একটি স্ল্যাশ সহ একটি শাখা থাকবে তখন এটি ডিরেক্টরি নীচুক্রমের অধীনে সঞ্চিত হয় .git/refs/heads


3
গভীর জবাবের জন্য ধন্যবাদ .. আন্তঃসত্তার সাথে আমি গিট ব্রাঞ্চ ফু / বার চেষ্টা করেছি (যা কাজ করেছে); তারপরে গিট শাখা -d foo / বার, কিন্তু আমি দেখতে পাচ্ছি যে foo / ডিরেক্টরি (এখন খালি) এখনও আছে! সম্পাদনা করুন: এবং আমি "গিট ব্রাঞ্চ ফু" করার সাথে সাথে এটি প্রতিস্থাপন করা হবে। সবকিছু ঠিক আছে.

1
@ ফাবি: দুষ্ট ... তবে অপ্রত্যাশিত নয়: আপনি বারটি (' foo' নেমস্পেসে) মুছে ফেলেছেন , তবে নয় foo(যা অন্য শাখার জন্য একটি নেমস্পেস হিসাবে কাজ করতে পারে বা নিজেই একটি শাখা হতে পারে)
ভোনসি

এটি সত্যিই গুরুত্বপূর্ণ নয়, তবে আপনি কল করার পরেও গিট তার অবস্থান পরিবর্তন করে না pack-refs, সুতরাং এটি আপনাকে এ থেকে রক্ষা করার উপায় থেকে বেরিয়ে যাচ্ছে।
জোশ লি

23
উত্তরটির সংক্ষিপ্তসার হিসাবে: আপনার শাখার নামগুলিতে স্ল্যাশ থাকতে পারে। ওপি এর ইতিমধ্যে একটি labsশাখা ছিল এবং তৈরি করার চেষ্টা করেছিল labs/feature, যা গিটারটি দেখে।
duozmo

107

শ্রেণিবদ্ধ শাখার নাম (স্ল্যাশ সহ শাখার নাম) রাখা সম্ভব। উদাহরণস্বরূপ আমার সংগ্রহশালায় আমার যেমন শাখা আছে (এস)। একটি সতর্কতা হ'ল আপনার ভাণ্ডারগুলিতে শাখা 'foo' এবং শাখা 'foo / বার' উভয় থাকতে পারে।

আপনার সমস্যাটি নামে স্ল্যাশ দিয়ে শাখা তৈরি করে নয়।

it গিট শাখা ফু / বার
ত্রুটি: রেফারেন্স / মাথা / ল্যাব / বৈশিষ্ট্য সমাধান করতে অক্ষম: ডিরেক্টরি নয়
মারাত্মক: আপডেটের জন্য রেফ লক করতে ব্যর্থ: ডিরেক্টরি নয়

উপরের ত্রুটি বার্তাটি 'ল্যাবস / বৈশিষ্ট্য' শাখার বিষয়ে কথা বলবে, 'ফু / বার' নয় (যদি না এটি অনুলিপি, অর্থাৎ আপনি সেশনের অংশগুলি সম্পাদনা করেন) তবে এটি ভুল না হয়। এর ফলাফল কী git branchবা git rev-parse --symbolic-full-name HEAD?


1
ধন্যবাদ, বিভ্রান্তির জন্য দুঃখিত, আমি প্রথমে একটি ফু / বার উদাহরণটি লিখেছি, তবে আমার আসল পরীক্ষা থেকে ত্রুটি বার্তাটি পেস্ট করেছি। এটি আর করবে না :) এবং আমার ভুলের জন্যও দুঃখিত, আমার ইতিমধ্যে একটি "ল্যাব" শাখা ছিল।

33

আপনার যদি ইতিমধ্যে বেস নামের একটি শাখা থাকে তবে কখনও কখনও এই সমস্যাটি দেখা দেয়।

আমি এটি চেষ্টা করেছি:

git checkout -b features/aName origin/features/aName

দুর্ভাগ্যক্রমে, ইতিমধ্যে আমার একটি শাখা ছিল featuresএবং আমি প্রশ্নকর্তার ব্যতিক্রম পেয়েছিলাম।

শাখাটি সরানো featuresসমস্যার সমাধান করে উপরের কমান্ডটি কাজ করেছিল।


32

আমার ক্ষেত্রে, আমি ভুলে গিয়েছিলাম যে ইতিমধ্যে একটি অব্যবহৃত labsশাখা ছিল। এটি মুছে ফেলা সমস্যার সমাধান:

git branch -d labs
git checkout -b labs/feature

ব্যাখ্যা:

প্রতিটি নামই কেবল পিতামাত শাখা বা একটি সাধারণ শাখা হতে পারে, উভয়ই নয়। কেন শাখাগুলি labs এবং labs/feature একই সাথে উভয় বিদ্যমান থাকতে পারে না তা জানায়।

এই আচরণের কারণ শাখাগুলি ফাইল সিস্টেমে সংরক্ষণ করা হয় এবং সেখানে আপনার একই স্তরে একটি ফাইল labsএবং ডিরেক্টরি থাকতে পারে না labs


-1

আমি ভুল হতে পারি, তবে আমি ভেবেছিলাম যে স্ল্যাশগুলি কেবল ব্রাঞ্চের নামগুলিতে উপস্থিত হবে যখন তারা কোনও দূরবর্তী রেপো সম্পর্কিত, উদাহরণস্বরূপ origin/master


11
তাদের নামে '/' দিয়ে স্থানীয় শাখা তৈরি করা - এবং সত্যই সাধারণ - এটি নিখুঁতভাবে সম্ভব। এটি একটি 'নেমস্পেসে' সম্পর্কিত শাখাগুলি গোষ্ঠীকরণের একটি সাধারণ উপায়।
সিবি বেইলি

হ্যাঁ সত্য কথা বলতে শেখার সময় বিভ্রান্তিকর হতে পারে তবে নামকরণটিও কার্যকর হতে পারে। তারপরে আবার স্ল্যাশ বা ড্যাশ ব্যবহার করে, আমি নিশ্চিত নই যে এটি ব্যক্তিগত স্বাদের বাইরেও গুরুত্বপূর্ণ?

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