GIT-UPDATE-REF(1) Git Manual GIT-UPDATE-REF(1) نام (NAME) git-update-ref - به‌روزرسانی ایمن نام شیء ذخیره‌شده در یک ارجاع خلاصه دستور (SYNOPSIS) git update-ref [-m ] [--no-deref] -d [] git update-ref [-m ] [--no-deref] [--create-reflog] [] git update-ref [-m ] [--no-deref] --stdin [-z] [--batch-updates] توضیحات (DESCRIPTION) با دریافت دو آرگومان، مقدار را در ذخیره می‌کند، و در صورت نیاز ارجاع‌های نمادین (symbolic refs) را ارجاع‌زدایی (dereference) می‌نماید. برای مثال، دستور git update-ref HEAD اشاره‌گر نوک شاخه فعلی را به شیء جدید به‌روزرسانی می‌کند. با دریافت سه آرگومان، پس از اطمینان از اینکه مقدار فعلی با مطابقت دارد، مقدار را در ذخیره می‌کند (با ارجاع‌زدایی احتمالی ارجاع‌های نمادین). به عنوان مثال، دستور git update-ref refs/heads/master نوک شاخه master را تنها زمانی به به‌روزرسانی می‌کند که مقدار فعلی آن برابر با باشد. می‌توانید ۴۰ نویسه "0" یا یک رشته خالی را به عنوان مشخص کنید تا مطمئن شوید ارجاعی که می‌سازید از قبل وجود نداشته باشد. آرگومان‌های نهایی نام اشیاء هستند؛ این دستور بدون هیچ گزینه‌ای از به‌روزرسانی یک ارجاع نمادین برای اشاره به ارجاعی دیگر پشتیبانی نمی‌کند (به git-symbolic-ref(1) مراجعه کنید). اما دستور git update-ref --stdin دارای دستورات symref-* است تا ارجاع‌های معمولی و ارجاع‌های نمادین بتوانند در قالب یک تراکنش یکسان کامیت شوند. اگر گزینه --no-deref مشخص شود، خود رونویسی می‌شود، نه مقداری که با دنبال کردن اشاره‌گرهای نمادین به دست می‌آید. با گزینه -d، پس از بررسی و اطمینان از اینکه نام‌برده هنوز حاوی است، آن را حذف می‌کند. با گزینه --stdin، دستور update-ref دستورالعمل‌ها را از ورودی استاندارد می‌خواند و تمام تغییرات را با یکدیگر اعمال می‌کند. دستورات را به شکل‌های زیر مشخص کنید: update SP SP [SP ] LF create SP SP LF delete SP [SP ] LF verify SP [SP ] LF symref-update SP SP [SP (ref SP | oid SP )] LF symref-create SP SP LF symref-delete SP [SP ] LF symref-verify SP [SP ] LF option SP LF start LF prepare LF commit LF abort LF با گزینه --create-reflog، دستور update-ref برای هر ارجاع یک reflog ایجاد خواهد کرد حتی اگر در حالت عادی ایجاد نمی‌شد. با گزینه --batch-updates، دستور update-ref به‌روزرسانی‌ها را در یک دسته (batch) اجرا می‌کند اما اجازه می‌دهد به‌روزرسانی‌های منفرد به دلیل ورودی نادرست یا نامعتبر کاربر با خطا مواجه شوند، و تنها به‌روزرسانی‌های موفق اعمال خواهند شد. با این حال، خطاهای مربوط به سیستم —مانند خطاهای I/O یا مشکلات حافظه— منجر به شکست کامل تمام به‌روزرسانی‌های دسته‌ای خواهد شد. هر به‌روزرسانی ناموفق با ساختار زیر گزارش می‌شود: rejected SP ( | ) SP ( | ) SP LF فیلدهای حاوی فاصله خالی را همانند رشته‌ها در کد منبع C درون گیومه قرار دهید؛ یعنی محصور در نقل‌قول دوتایی و با کاراکترهای اسکیپ بک‌اسلش. از ۴۰ نویسه "0" یا رشته خالی برای مشخص کردن مقدار صفر استفاده کنید. برای تعیین یک مقدار حذف‌شده یا وجودنداشته، مقدار و فاصله قبل از آن (SP) را کاملاً حذف کنید. به عنوان روش جایگزین، از -z برای مشخص کردن مقادیر با فرمت خاتمه‌یافته با NUL و بدون نقل‌قول استفاده نمایید: update SP NUL NUL [] NUL create SP NUL NUL delete SP NUL [] NUL verify SP NUL [] NUL symref-update SP NUL [NUL (ref NUL | oid NUL )] NUL symref-create SP NUL NUL symref-delete SP [NUL ] NUL symref-verify SP [NUL ] NUL option SP NUL start NUL prepare NUL commit NUL abort NUL در این قالب، از ۴۰ نویسه "0" برای مشخص کردن مقدار صفر، و از یک رشته خالی برای مشخص کردن مقدار ناموجود استفاده کنید. در هر دو قالب، مقادیر می‌توانند به هر شکلی که گیت به عنوان یک نام شیء به رسمیت می‌شناسد مشخص شوند. دستورات در هر قالب دیگر یا یک تکراری باعث تولید خطا خواهند شد. معانی دستورات به شرح زیر است: update تنظیم به پس از اعتبارسنجی (در صورت ارائه). برای اطمینان از اینکه ارجاع پس از به‌روزرسانی وجود نداشته باشد مقدار صفر را برای و/یا برای اطمینان از اینکه ارجاع پیش از به‌روزرسانی وجود نداشته مقدار صفر را برای مشخص کنید. create ایجاد با مقدار پس از اطمینان از اینکه وجود ندارد. مقدار ارائه‌شده نباید صفر باشد. delete حذف پس از اطمینان از اینکه با (در صورت ارائه) وجود دارد. در صورت ارائه، مقدار نباید صفر باشد. symref-update تنظیم به پس از اعتبارسنجی یا (در صورت ارائه). یک مقدار صفر برای تعیین کنید تا مطمئن شوید ارجاع پیش از به‌روزرسانی وجود نداشته باشد. verify اعتبارسنجی در برابر بدون تغییر دادن آن. اگر صفر یا ناموجود باشد، ارجاع نباید وجود داشته باشد. symref-create ایجاد ارجاع نمادین با پس از اطمینان از عدم وجود آن. symref-delete حذف پس از اطمینان از اینکه با (در صورت ارائه) وجود دارد. symref-verify اعتبارسنجی ارجاع نمادین در برابر بدون تغییر آن. اگر ناموجود باشد، ارجاع نباید وجود داشته باشد. این دستور تنها در حالت no-deref قابل استفاده است. option تغییر رفتار دستور بعدی که نام یک را می‌برد. تنها گزینه معتبر no-deref برای جلوگیری از ارجاع‌زدایی یک ارجاع نمادین است. start شروع یک تراکنش. بر خلاف یک نشست غیرتراکنشی، در صورتی که نشست بدون یک کامیت صریح پایان یابد، یک تراکنش به طور خودکار لغو (abort) می‌شود. این دستور ممکن است در زمانی که تراکنش فعلی قبلاً کامیت یا لغو شده است، یک تراکنش خالی جدید ایجاد کند. prepare آماده‌سازی برای کامیت تراکنش. این کار فایل‌های قفل را برای همه به‌روزرسانی‌های ارجاع در صف ایجاد خواهد کرد. اگر یکی از ارجاع‌ها نتواند قفل شود، تراکنش لغو می‌شود. commit کامیت کردن تمام به‌روزرسانی‌های ارجاع در صف این تراکنش، که باعث پایان تراکنش می‌شود. abort لغو تراکنش، و آزادسازی تمام قفل‌ها در صورتی که تراکنش در حالت آماده‌سازی باشد. اگر تمام ها بتوانند با مقادیر منطبق به طور همزمان قفل شوند، تمام تغییرات اعمال می‌گردند. در غیر این صورت، هیچ تغییری اعمال نخواهد شد. توجه داشته باشید در حالی که هر به صورت منفرد و اتمیک به‌روزرسانی یا حذف می‌شود، یک خواننده همزمان ممکن است همچنان زیرمجموعه‌ای از این تغییرات را مشاهده کند. ثبت وقایع به‌روزرسانی‌ها (LOGGING UPDATES) اگر پارامتر پیکربندی "core.logAllRefUpdates" برابر با true باشد و ارجاع یکی از موارد زیر "refs/heads/"، "refs/remotes/"، "refs/notes/"، یا یک شبه‌ارجاع مانند HEAD یا ORIG_HEAD باشد؛ یا فایل "$GIT_DIR/logs/" وجود داشته باشد، آنگاه git update-ref خطی را به فایل لاگ "$GIT_DIR/logs/" اضافه خواهد کرد (با ارجاع‌زدایی از همه ارجاع‌های نمادین قبل از ایجاد نام لاگ) که تغییر مقدار ارجاع را شرح می‌دهد. خطوط لاگ به این قالب هستند: oldsha1 SP newsha1 SP committer LF که در آن "oldsha1" مقدار هگزادسیمال ۴۰ نویسه‌ای ذخیره‌شده قبلی در است، "newsha1" مقدار هگزادسیمال ۴۰ نویسه‌ای بوده و "committer" نام، نشانی رایانامه و تاریخ کامیت‌کننده در قالب استاندارد شناسه کامیت‌کننده گیت است. به صورت اختیاری با گزینه -m: oldsha1 SP newsha1 SP committer TAB message LF که در آن همه فیلدها همانند توضیحات بالا هستند و "message" مقداری است که به گزینه -m داده شده است. در صورتی که کاربر جاری قادر به ایجاد یک فایل لاگ جدید نباشد، نتواند به فایل لاگ موجود اضافه کند، یا اطلاعات کامیت‌کننده در دسترس نباشد، به‌روزرسانی با خطا مواجه خواهد شد (بدون ایجاد تغییر در ). نکات (NOTES) ارجاع‌های نمادین در ابتدا با استفاده از پیوندهای نمادین پیاده‌سازی شده بودند. این روش اکنون منسوخ شده است زیرا همه سیستم‌های فایل از پیوندهای نمادین پشتیبانی نمی‌کنند. این دستور پیوندهای نمادین واقعی را تنها در صورتی دنبال می‌کند که با "refs/" شروع شوند؛ در غیر این صورت فقط تلاش می‌کند آن‌ها را بخواند و به عنوان یک فایل معمولی به‌روزرسانی کند (یعنی به سیستم فایل اجازه می‌دهد آن‌ها را دنبال کند، اما چنین پیوند نمادینی به جای دیگر را با یک نام فایل معمولی رونویسی خواهد کرد). همچنین ببینید (SEE ALSO) git-symbolic-ref(1) گیت (GIT) بخشی از مجموعه git(1) Git 2.55.0 2026-06-29 GIT-UPDATE-REF(1)