لماذا يصمت "git branch" في المستودعات الجديدة؟

عند إنشاء مستودع تخزين جديد وتشغيل git branch ، فإنه يخرج بصمت. فمثلا:

$ mkdir /tmp/foo; cd /tmp/foo; git init
Initialized empty Git repository in /tmp/foo/.git/

$ git branch

لماذا لا يوفر الأمر أي إخراج ، أو إظهار الفرع الرئيسي؟

2

3 إجابة

TL، DR

لا يوجد رؤساء فروع حتى الآن.

شرح مفصل

لا يملك مستودع Git فروعًا حتى تقوم بإجراء التزامك الأول. يحدد المستودع الذي تم تهيئته حديثًا HEAD إلى refs/heads/master ، ولكن لن يكون refs/heads/master موجودًا أو يحتوي على مؤشر التزام حتى بعد إجراء الالتزام الأول.

أثناء ارتكاب ، Git dereferences الرمز الرأسية - الرأس HEAD لإيجاد رأس الفرع الحالي ، ثم يقوم بتحديث ذلك الرأس مع التجزئة المتضمنة بواسطة git-commit-tree.

والنتيجة النهائية هي أن git branch ليس لديها أي شيء للإبلاغ عنه في مستودع جديد. مع عدم وجود رؤوس فروع ، فإنه ينتهي ببساطة بصمت مع حالة خروج صفر.

أنظر أيضا

  • وبوابة فرع (1) </لى>
  • وبوابة إلزام شجرة (1) </لى>
  • وبوابة-رمزي-المرجع (1). </لى>
  • وبوابة التحديث-المرجع (1) </لى>
  • وgitcore البرنامج التعليمي (7) </لى>
8
وأضاف
تفسير جميل لما يحدث في الخلف. هذا سوف يساعد المستخدمين على فهم كيفية عمل بوابة.
وأضاف المؤلف Ikke, مصدر

لاحظ أن الفرع هو مجرد مؤشر إلى التزام.
بما أن الريبو الفارغ (مع الشجرة الفارغة ) لم يرتكب أي التزام ، وليس لديك فرع .

الالتزام الأول سيؤدي إلى إنشاء فرع باسم " master " ، لأن HEAD مراجع refs/heads/master .
إذا كنت تريد إنشاء الالتزام الأول على فرع مختلف (من الرئيسية ) ، فستحتاج إلى تغيير المرجع الرمزي للهيئة أولاً (كما هو مفصل في هذا الموضوع ):

git symbolic-ref HEAD refs/heads/non-master 

ثم جعل أول الالتزام الخاص بك.

2
وأضاف

نعم ، تحتاج أولاً إلى الأداء

$ git add .
$ git commit -m 'first commit'

أوامر.

0
وأضاف