لماذا يظهر "Origin/HEAD" عند تشغيل "git Branch -r"؟
-
21-08-2019 - |
سؤال
عند تشغيل git branch -r
لماذا الحرائق لا قائمة origin/HEAD
؟على سبيل المثال، هناك ريبو عن بعد على GitHub، على سبيل المثال، مع فرعين:ميزة رئيسية ورائعة.إذا فعلت git clone
للحصول عليه ثم الانتقال إلى الدليل الجديد وإدراج الفروع، أرى هذا:
$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature
أو بأي ترتيب سيكون (ألفا؟أنا أقوم بتزييف هذا المثال للحفاظ على سرية هوية الريبو البريئة).إذن ما هو HEAD
عمل؟هل هذا هو آخر شخص push
كان لديهم HEAD
وأشار عندما دفعوا؟لن يكون هذا دائما مهما كان ما كانوا عليه push
إد؟ HEAD
يتنقل...لماذا أهتم بما هو شخص ما HEAD
وأشار على جهاز آخر؟
لقد بدأت للتو في التعامل مع التتبع عن بعد وما إلى ذلك، لذلك يعد هذا أحد الالتباسات العالقة.شكرًا!
يحرر:كان لدي انطباع بأن عمليات إعادة الشراء المخصصة عن بعد (مثل GitHub حيث لن يقوم أحد بالدخول والعمل على هذا الرمز، ولكن فقط سحب أو دفع، وما إلى ذلك) لم يكن ولا ينبغي أن يكون لها رأس لأنه لم يكن هناك، في الأساس، أي عمل ينسخ.ليس كذلك؟
المحلول
@روبينست صحيح.
في git، يمكنك تحديد الفرع الذي سيتم سحبه افتراضيًا (على سبيل المثال.عند الاستنساخ).بشكل افتراضي، origin/HEAD
سوف أشير إلى ذلك.
على جيثب، يمكنك تغيير هذا في إعدادات المسؤول لمستودع GitHub الخاص بك.يمكنك أيضًا القيام بذلك من سطر الأوامر عبر
git remote set-head origin trunk
أو حذفه نهائيا عبر
git remote set-head origin -d
مثال.انظر إلى القائمة المنسدلة "تبديل الفروع". trunk
يتم فحصها، لذلك origin/HEAD
يتبع trunk
.
نصائح أخرى
والسبب مستودع عارية يمكن أن يكون لها رأس، غير أن لأنه يحدد والتي يتم التحقق فرع في البداية من بعد نسخة من المخزون.
وعادة، ونقاط الرأس لإتقان، وهذا هو الفرع الذي تم سحبه عندما استنساخ الناس المخزون. تعيين إلى فرع آخر (عن طريق تحرير الرأس في مستودع العارية) النتائج في هذا الفرع يجري سحبه على استنساخ.
وكنت تحت انطباع بأن اتفاقيات إعادة الشراء البعيدة مخصصة (مثل جيثب حيث لا أحد سوف SSH في ويعمل على هذا الرمز، ولكن فقط سحب أو دفع، الخ) لم لا ينبغي أن يكون لها رأس لأنه كان هناك، في الأساس، لا نسخة العمل. ليس ذلك؟
اقتباس فقرة>وكان لي نفس الانطباع بالضبط كما قلت لك.
وأنا حتى لا يمكن حذف هذا الفرع أصل / HEAD تتبع عن بعد المستنسخة من جيثب عن طريق القيام
git branch -d -r origin/HEAD
وكان لهذا أي تأثير.
ويمكن لبعض واحد يقول لي كيف يمكنني حذف هذا الفرع أصل / HEAD تتبع عن بعد؟
تحديث
وعلى الرغم من أنني لم جدت لماذا هناك يتم إنشاء أصل / HEAD عند استنساخ من جيثب، وأجد وسيلة لحذفها.
والإصدار الجديد من بوابة توفر
git remote set-head <name> -d
لحذف مؤشر رأس عديمة الفائدة فرع عن بعد تتبع.
ويمكننا أيضا تغيير الاسم الافتراضي البكم "الأصل" إلى ما نريد باستخدام
git remote rename origin <new_name>
وهذا الأمل يمكن أن تساعد. :)
أنت على حق في ذلك دفع ل تعمل عمليات إعادة الشراء المخصصة عن بعد بشكل أفضل عندما تكون "عارية"، أي عندما لا تحتوي على أدلة عمل.تم تصميم بنية Git للتحديث عن طريق التصحيحات أو pull
(fetch
)، وهو أمر منطقي في VCS الموزعة.كما تقول المستندات في مكان ما، قد يؤدي الدفع إلى فرع تم سحبه حاليًا إلى حدوث ذلك "نتائج غير متوقعة".
يعد HEAD جزءًا من متطلبات المستودع الصالح. تخطيط مستودع جيت يقول جزئيا:
HEAD
A symref (see glossary) to the refs/heads/ namespace describing the currently active
branch. It does not mean much if the repository is not associated with any working tree
(i.e. a bare repository), but a valid git repository must have the HEAD file; some
porcelains may use it to guess the designated "default" branch of the repository
(usually master). It is legal if the named branch name does not (yet) exist.
لذلك سترى HEAD كجزء من قائمة الفروع، حتى لو كان "لا يعني الكثير..."
إذا "الأصل" هو مستودع بعيد، ثم يحدد أصل / HEAD الفرع الافتراضي على أن مستودع بعيد.
مثال:
$ git remote show
origin
$ git remote show origin
* remote origin
Fetch URL: git@github.com:walkerh/pipe-o-matic.git
Push URL: git@github.com:walkerh/pipe-o-matic.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (fast-forwardable)
ملاحظة السطر الذي يقول "رئيس فرع: سيد". هذا هو المكان الذي يتيح للمستودع بعيد عملاء معرفة أي فرع إلى الخروج افتراضيا.
وهناك دائما رأس ذلك <قوية> نقطة لفرع سحبه حاليا من على الريبو عن بعد (والتي قد لا يجوز أن يكون أو الماجستير). حتى مستودعات النائية لها فروع الحالية. وعادة ما هو سيد، ومن على قمة رأسي لا أستطيع التفكير في أي سبب لماذا يمكن لأحد أن ترغب في تغييره، ولكن يمكن تغييرها.
وتخميني هو أن شخصا ما دفع فرع ويطلق عليه رأس:
git push origin HEAD