it-swarm.asia

ما هي علامة git ، وكيفية إنشاء العلامات وكيفية الخروج

عندما أتحقق من أمر git tag use command مثل هذا:

git checkout -b local_branch_name Origin/remote_tag_name

لقد حصلت على خطأ مثل هذا:

error: pathspec `Origin/remote_tag_name` did not match any file(s) known to git.

يمكنني العثور على remote_tag_name عند استخدام أمر git tag.

353
Ryanqy

لنبدأ أولاً بشرح ما هو علامة في بوابة

 enter image description here

يتم استخدام علامة لتسمية علامة معينة الالتزام في السجل.
يُستخدم عادةً لوضع علامات على نقاط الإطلاق (على سبيل المثال ، v1.0 ، إلخ).

على الرغم من أن علامة قد تظهر مشابهة للفرع ، إلا أن العلامة لا تتغير .
يشير مباشرة إلى التزام محدد في التاريخ.

 enter image description here


لن تكون قادرًا على التحقق من العلامات إذا لم يكن محليًا في المستودع الخاص بك ، لذا فأنت بحاجة إلى fetch_ العلامات إلى مستودعك المحلي.

أولاً ، تأكد من وجود العلامة محليًا عن طريق القيام

# --all will fetch all the remotes.
# --tags will fetch all tags as well
git fetch --all --tags --Prune

ثم تحقق من العلامة عن طريق تشغيل

git checkout tags/<tag_name> -b <branch_name>

بدلاً من Origin ، استخدم البادئة tags/.


في هذه العينة ، يكون لديك 2 علامات الإصدار 1.0 والإصدار 1.1 ، ويمكنك التحقق من ذلك باستخدام أي مما يلي:

git checkout A  ...
git checkout version 1.0  ...
git checkout tags/version 1.0  ...

كل ما سبق سوف يفعل نفس الشيء لأن العلامة ليست سوى مؤشر على التزام معين.

 enter image description here
الأصل: https://backlog.com/git-tutorial/img/post/stepup/capture_stepup4_1_1.png


كيف ترى قائمة بجميع العلامات؟

# list all tags
git tag

# list all tags with given pattern ex: v-
git tag --list 'v-*'

كيفية إنشاء العلامات؟

هناك طريقتان لإنشاء علامة:

# normal tag 
git tag 

# annotated tag
git tag -a

الفرق بين 2 هو أنه عند إنشاء علامة توضيحية ، يمكنك إضافة بيانات وصفية كما هو الحال في التزام git:
الاسم والبريد الإلكتروني والتاريخ والتعليق والتوقيع

 enter image description here

كيفية حذف العلامات؟

# delete any given tag
git tag -d <tag name>

# Don't forget to remove the deleted tag form the server with Push tags

كيفية استنساخ علامة محددة؟

من أجل الحصول على محتوى علامة معينة ، يمكنك استخدام الأمر checkout.
كما هو موضح أعلاه ، تشبه العلامات أي التزامات أخرى حتى نتمكن من استخدام checkout وبدلاً من استخدام SHA-1 ، استبدلها ببساطة بـ {tag_name

الخيار 1:

# Update the local git repo with the latest tags from all remotes
git fetch --all

# checkout the specific tag
git checkout tags/<tag> -b <branch>

الخيار 2:

باستخدام الأمر استنساخ

منذ git support (shallow clone عن طريق إضافة --branch إلى أمر clone ، يمكننا استخدام اسم العلامة بدلاً من اسم الفرع. يعرف Git كيفية "ترجمة" SHA-1 المعطى إلى الالتزام ذي الصلة

# Clone a specific tag name
 git clone <url. --branch=<tag_name>

بوابة استنساخ - فرع =

يمكن {--branch أيضًا) وضع العلامات وفصل HEAD عند ذلك الالتزام في المستودع الناتج.

754
CodeWizard