গিট: "ব্রাঞ্চনাম" এবং "রেফ / মাথা / শাখা নাম" এর মধ্যে পার্থক্য


97

একটি উদাহরণে ব্যাখ্যা করা ভাল: আমি সংগ্রহস্থলের 0.58 শাখায় আছি এবং এটিই আমি কীভাবে টানছি:

git pull origin 0.58

আমি যখন কেবল "গিট টান" কল করি তখন আমি পাই:

ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.0.58.remote = <nickname>
    branch.0.58.merge = <remote-ref>
    remote.<nickname>.url = <url>
    remote.<nickname>.fetch = <refspec>

See git-config(1) for details.

আমি যখন এই শাখাটি পরীক্ষা করে দেখলাম তখন আমি সম্ভবত কিছু বিকল্প (- ট্র্যাক?) ভুলে গেছি। যাইহোক, আমি এখন এটি সেট করেছি:

git config branch.0.58.merge 0.58
git config branch.0.58.remote origin

এবং এটি কাজ বলে মনে হচ্ছে। তারপরে, কেবল আগ্রহের কারণে আমি এই সেটিং সম্পর্কে অন্য কয়েকটি শাখার দিকে একবার নজর রেখেছি:

ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin

আমি এখন ভাবছিলাম, "0.58" এর মধ্যে কোনও পার্থক্য আছে বা আমি "রেফ / হেড / 0.58" উল্লেখ করব?

ঠিক পার্থক্য কী?


4
শুধু শিরোনামে টাইপো adress করার (বর্তমানে এটা পরিবর্তন করে একটি পুরানো শিরোনাম সঙ্গে তালগোল পাকানো ছাড়া) , এটা পড়া উচিত "refs / মাথা / branchname" , headsএকটি "s" এর সাথে।
রোমেনভ্যালারি

উত্তর:


129

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

refs/heads/0.580.58 নামের একটি শাখা নির্দিষ্ট করে । রেফটি কোন নেমস্পেসের মধ্যে রয়েছে তা যদি আপনি নির্দিষ্ট না করেন তবে গিটটি ডিফল্টর মধ্যে প্রদর্শিত হবে। এটি কেবল 0.58 কল্পনাপ্রসূতভাবে অস্পষ্ট ব্যবহার করে তোলে - আপনার একটি শাখা এবং 0.58 নামের একটি ট্যাগ উভয়ই থাকতে পারে।


4
অনেক অনেক ধন্যবাদ, এটি এটি খুব ভালভাবে ব্যাখ্যা করে। এটি ঠিক সরল "0.58" সাথে কাজ করেছে কারণ এর নামকরণের কোনও ট্যাগ নেই।
অ্যালবার্ট

4
ঠিক আছে, এটি মূলত সর্বদা সম্পূর্ণরূপে ঠিক থাকবে তবে নিরাপদ থাকা ভাল।
ক্যাসাবেল

এই উত্তর একটি ধন। অবশেষে কেউ গিটকে ব্যাখ্যা করে এবং আমি এটি উপভোগ করি! ধন্যবাদ
অ্যাডারচক্স

9
: এখানে স্বচ্ছতার জন্য তাদের সব refs/heads/এবং refs/remotes/এবংrefs/tags/
জিম Aho

41

কৌতূহলী কারও জন্য - git show-refযা গিট ভি ১.৮.২.২ থেকে পাওয়া যায়, এটি আপনাকে আপনার স্থানীয় ভাণ্ডারে থাকা সমস্ত রেফারেন্স দেখায়।


4
এছাড়াও git log --decorate=fullইতিহাস রেফারেন্স পূর্ণ নাম দেখাবে
galath

19

দেখুন, branchNameজিআইটি প্রকৃতপক্ষে এটি সনাক্ত করতে পারার আগে সম্পূর্ণ সমাধান করা দরকার। পুরো সমাধান নাম হবে refs/heads/branchName

বিখ্যাত কমান্ডগুলির মধ্যে একটি git checkout branchNameআসলে আপনি কোথায় চেকআউট করতে চান তা সনাক্ত করার জন্য এটি স্বয়ংক্রিয়ভাবে পুরোপুরি সমাধান করে ol মনে রাখবেন এটি এটি স্বয়ংক্রিয়ভাবে হয়ে যায় তাই আমরা এটিকে নিজের হাতে পুরোপুরি কখনই লিখি না।

কীভাবে তা করে? আমাদের এখানে দেখুন

refname : যেমন master, heads/master,refs/heads/master

একটি প্রতীকী রেফ নাম। উদাহরণস্বরূপ মাস্টার সাধারণত প্রতিশ্রুতিবদ্ধ বস্তু দ্বারা রেফারেন্স মানে refs/heads/master। আপনার যদি উভয়ই থাকে heads/masterএবং tags/master, আপনি গিটকে বলতে heads/masterচাইলে আপনি কোনটি বলতে চাইছেন তা স্পষ্ট করে বলতে পারেন। অস্পষ্ট যখন, <refname>নিম্নলিখিত নিয়মে প্রথম ম্যাচ গ্রহণ করে একটি অসন্তুষ্ট হয়:

1.If $GIT_DIR/<refname>বিদ্যমান, যে আপনি কি বলতে চাইছেন (এটি সাধারনতঃ শুধুমাত্র জন্য দরকারী HEAD, FETCH_HEAD, ORIG_HEAD, MERGE_HEADএবং CHERRY_PICK_HEAD);

2. অন্যদিকে, refs/<refname>যদি এটি বিদ্যমান;

৩. অন্যদিকে, refs/tags/<refname>যদি এটি বিদ্যমান;

4. অন্যদিকে, refs/heads/<refname>যদি এটি বিদ্যমান;

5. অন্যদিকে, refs/remotes/<refname>যদি এটি বিদ্যমান;

Other. অন্যদিকে, refs/remotes/<refname>/HEADযদি এটি বিদ্যমান থাকে।

সুতরাং 6 টি পদক্ষেপের উপরে এটি সমাধান করার চেষ্টা করে branchName। অতএব আমাদের এটির জন্য কখনই কোনও সংশোধন করা ব্রাঞ্চনাম দেওয়ার দরকার নেই।

এখানে এবং এখানে দেখুন ।

এছাড়াও, আপনার .gitডিরেক্টরিতে যান এবং refফোল্ডারের ভিতরে দেখুন ।

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