این دستور git-reset است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
git-reset - HEAD فعلی را به حالت مشخص شده بازنشانی کنید
خلاصه
دستگاه گوارش تنظیم مجدد [-q] [ ] [--] ...
دستگاه گوارش تنظیم مجدد (--پچ | -p) [ ] [--] [ ...]
دستگاه گوارش تنظیم مجدد [--نرم | -- مخلوط [-N] | --سخت | --ادغام | -- نگه داشتن] [-q] [ ]
شرح
در فرم اول و دوم، ورودی ها را کپی کنید به شاخص در سومین
فرم، سر شاخه فعلی (HEAD) را روی ، به صورت اختیاری تغییر فهرست و
درخت کار برای مطابقت. را / به طور پیش فرض به HEAD در تمام اشکال.
دستگاه گوارش تنظیم مجدد [-q] [ ] [--] ...
این فرم ورودی های فهرست را برای همه بازنشانی می کند به ایالت خود در . (آی تی
درخت کار یا شاخه فعلی را تحت تأثیر قرار نمی دهد.)
این به این معنی است که git ریست می شود برعکس git add است .
بعد از اجرای git reset برای به روز رسانی ورودی فهرست، می توانید استفاده کنید git-checkout(1)
برای بررسی محتویات خارج از فهرست به درخت کار. روش دیگر، با استفاده از git-
وارسی(1) و با مشخص کردن یک commit، می توانید محتویات یک مسیر را از a کپی کنید
در یک حرکت به شاخص و درخت کار متعهد شوید.
دستگاه گوارش تنظیم مجدد (--پچ | -p) [ ] [--] [ ...]
به صورت تعاملی، هانک ها را در تفاوت بین شاخص و انتخاب کنید
(به طور پیش فرض روی HEAD قرار می گیرد). هنک های انتخاب شده برعکس بر روی شاخص اعمال می شوند.
به این معنی که git reset -p برعکس git add -p است، یعنی می توانید از آن استفاده کنید
به طور انتخابی هنک ها را بازنشانی کنید. بخش "حالت تعاملی" را ببینید git-add(1) برای یادگیری چگونگی
برای اجرای حالت --patch.
دستگاه گوارش تنظیم مجدد [ ] [ ]
این فرم سر شاخه فعلی را بازنشانی می کند و احتمالاً ایندکس را به روز می کند
(بازنشانی آن به درخت ) و درخت کار بسته به . اگر
حذف شده است، به طور پیش فرض روی "--mixed" قرار می گیرد. در باید یکی از موارد زیر باشد:
--نرم
به هیچ وجه فایل فهرست یا درخت کار را لمس نمی کند (اما سر را به حالت اولیه بازنشانی می کند
، درست مانند همه حالت ها). با این کار تمام فایلهای تغییر یافته شما به «Changes to
متعهد باشد، همانطور که دستگاه گوارش وضعیت آن را قرار می دهد.
-- مخلوط
ایندکس را بازنشانی می کند اما درخت کار را بازنشانی می کند (یعنی فایل های تغییر یافته حفظ می شوند
اما برای commit علامت گذاری نشده است) و مواردی را گزارش می کند که به روز نشده اند. این است
اقدام پیش فرض
اگر -N مشخص شده باشد، مسیرهای حذف شده به عنوان قصد افزودن علامت گذاری می شوند (نگاه کنید به git-add(1).
--سخت
شاخص و درخت کار را بازنشانی می کند. هر گونه تغییر در فایل های ردیابی شده در حال کار
درخت از زمان دور ریخته می شوند.
--ادغام
ایندکس را بازنشانی می کند و فایل های موجود در درخت کاری که متفاوت هستند را به روز می کند
بین و HEAD، اما مواردی را که بین ایندکس متفاوت هستند نگه می دارد
و درخت کاری (یعنی تغییراتی دارند که اضافه نشده اند). اگر یک فایل
که بین آن متفاوت است و شاخص تغییرات بدون مرحله دارد، تنظیم مجدد است
سقط شد
به عبارت دیگر، --merge کاری شبیه a انجام می دهد دستگاه گوارش درخت خواندن -u -m ، اما
ورودی های فهرست نشده را به جلو می برد.
--نگاه داشتن
ورودی های فهرست را بازنشانی می کند و فایل هایی را در درخت کاری که متفاوت هستند به روز می کند
بین و سر. اگر فایلی که بین و سر
تغییرات محلی دارد، بازنشانی لغو می شود.
اگر میخواهید یک commit غیر از آخرین موجود در یک شعبه را لغو کنید، git-revert(1) متعلق به شماست
دوست
OPTIONS
-q، --آرام
ساکت باشید، فقط خطاها را گزارش کنید.
مثال ها
واگرد افزودن
$ ویرایش (1)
$ git را اضافه کنید frotz.c filfre.c
$ mailx (2)
بازنشانی git $ (3)
$ git pull git://info.example.com/ nitfol (4)
1. شما با خوشحالی روی چیزی کار می کنید و متوجه می شوید که تغییرات در این فایل ها وجود دارد
سفارش خوب. وقتی «git diff» را اجرا میکنید، نمیخواهید آنها را ببینید، زیرا قصد دارید
کار بر روی فایل های دیگر و تغییرات با این فایل ها باعث حواس پرتی می شود.
2. کسی از شما می خواهد که بکشید، و تغییرات ارزش ادغام شدن را دارند.
3. با این حال، شما قبلاً ایندکس را کثیف کرده اید (یعنی شاخص شما با HEAD مطابقت ندارد
مرتکب شدن). اما می دانید کششی که می خواهید انجام دهید بر frotz.c یا تأثیر نمی گذارد
filfre.c، بنابراین تغییرات ایندکس را برای این دو فایل برگردانید. تغییرات شما در کار
درخت در آنجا باقی می ماند
4. سپس می توانید بکشید و ادغام کنید و تغییرات frotz.c و filfre.c همچنان در قسمت باقی بماند
درخت کار
یک commit را لغو کنید و دوباره انجام دهید
$ git commit ...
بازنشانی git $ --soft HEAD^ (1)
$ ویرایش (2)
$ git commit -a -c ORIG_HEAD (3)
1. این اغلب زمانی انجام می شود که به یاد داشته باشید آنچه را که انجام داده اید ناقص است،
یا پیام commit خود را اشتباه نوشتید یا هر دو. برگ درخت کار مانند قبل بود
"تنظیم مجدد".
2. در فایل های درختی کار اصلاحاتی انجام دهید.
3. "تنظیم مجدد" سر قدیمی را به .git/ORIG_HEAD کپی می کند. commit را با شروع از آن دوباره انجام دهید
پیام ورود اگر نیازی به ویرایش بیشتر پیام ندارید، می توانید گزینه -C را بدهید
به جای آن.
همچنین گزینه --amend to را ببینید git-commit(1).
یک commit را لغو کنید و آن را به یک شاخه موضوع تبدیل کنید
موضوع/wip شاخه $ git (1)
$ git reset --hard HEAD~3 (2)
$ git پرداخت موضوع/wip (3)
1. شما تعهداتی کرده اید، اما متوجه شوید که آنها برای حضور در "استاد" زودرس بودند.
شاخه. می خواهید به صیقل دادن آنها در یک شاخه موضوع ادامه دهید، بنابراین "موضوع/پاک کردن" را ایجاد کنید
منشعب از HEAD فعلی.
2. شاخه اصلی را به عقب برگردانید تا از شر آن سه تعهد خلاص شوید.
3. به شاخه «موضوع/پاک کردن» بروید و به کار خود ادامه دهید.
لغو تعهدات برای همیشه
$ git commit ...
$ git reset --hard HEAD~3 (1)
1. سه کامیت آخر (HEAD، HEAD^ و HEAD~2) بد بودند و شما نمی خواهید
هرگز آنها را دوباره ببینید انجام دادن نه اگر قبلاً این تعهدات را داده اید، این کار را انجام دهید
شخص دیگری (به بخش "بازیابی از UPSTREAM REBASE" مراجعه کنید git-rebase(1) برای
پیامدهای انجام این کار.)
لغو ادغام یا کشیدن
$ git pull (1)
ادغام خودکار nitfol
CONFLICT (محتوا): ادغام تضاد در nitfol
ادغام خودکار ناموفق بود. تضادها را برطرف کنید و سپس نتیجه را اعلام کنید.
بازنشانی git $ -- سخت (2)
$ git pull . موضوع/شاخه (3)
به روز رسانی از 41223... تا 13134...
سریع به جلو
بازنشانی git $ --سخت ORIG_HEAD (4)
1. تلاش برای به روز رسانی از بالادست منجر به درگیری های زیادی شد. تو آماده نبودی
در حال حاضر زمان زیادی را صرف ادغام کنید، بنابراین تصمیم می گیرید بعداً این کار را انجام دهید.
2. "pull" ادغام را انجام نداده است، بنابراین "git reset --hard" که مترادف "git" است.
reset --hard HEAD" آشفتگی را از فایل فهرست و درخت کار پاک می کند.
3. یک شاخه موضوعی را در شاخه فعلی ادغام کنید که منجر به فوروارد سریع شد.
4. اما شما تصمیم گرفتید که شاخه تاپیک هنوز برای مصرف عمومی آماده نیست.
"کشش" یا "ادغام" همیشه از نوک اصلی شاخه فعلی در ORIG_HEAD خارج می شود،
بنابراین بازنشانی سخت به آن فایل ایندکس و درخت کار را به آن بازمی گرداند
حالت، و نوک شاخه را به آن commit بازنشانی می کند.
ادغام یا کشیدن داخل درخت کار کثیف را لغو کنید
$ git pull (1)
ادغام خودکار nitfol
ادغام ساخته شده توسط بازگشتی.
nitfol | 20 +++++----
...
$ git reset -- ادغام ORIG_HEAD (2)
1. حتی اگر ممکن است تغییرات محلی در درخت کاری خود داشته باشید، می توانید با خیال راحت بگویید
"git pull" وقتی می دانید که تغییر در شاخه دیگر با هم همپوشانی ندارد
آنها.
2. پس از بررسی نتیجه ادغام، ممکن است متوجه شوید که در دیگری تغییر کرده است
شعبه رضایت بخش نیست اجرای "git reset --hard ORIG_HEAD" به شما امکان می دهد به آن بازگردید
جایی که در آن بودید، اما تغییرات محلی شما را که نمیخواهید حذف میکند. "git
reset --merge" تغییرات محلی شما را حفظ می کند.
جریان کار قطع شد
فرض کنید در حالی که در وسط a هستید، با یک درخواست رفع فوری قطع می شوید
تغییر بزرگ فایلهای موجود در درخت کاری شما هنوز به هیچ شکلی نیستند که قابل اجرا باشند،
اما برای رفع اشکال سریع باید به شعبه دیگر بروید.
ویژگی پرداخت $ git ;# شما در شاخه "feature" کار می کردید و
$ کار کار کار ;# قطع شد
$ git commit -a -m "Snapshot WIP" (1)
$ git checkout master
$ fix fix fix
$ git commit ;# commit با لاگ واقعی
ویژگی پرداخت git $
$ git reset --soft HEAD^ ;# بازگشت به حالت WIP (2)
بازنشانی git $ (3)
1. این commit از بین میرود، بنابراین یک پیام گزارش دور ریختنی درست است.
2. این حذف می کند WIP commit از تاریخچه commit، و درخت کاری خود را به
وضعیت درست قبل از ساختن آن عکس فوری.
3. در این مرحله، فایل فهرست همچنان دارای تمام تغییرات WIP است که شما به عنوان انجام داده اید
عکس فوری WIP. این فهرست را بهروزرسانی میکند تا فایلهای WIP شما را غیرمتعهد نشان دهد.
همچنین مشاهده کنید git-stash(1).
یک فایل واحد را در فهرست بازنشانی کنید
فرض کنید فایلی را به فهرست خود اضافه کرده اید، اما بعداً تصمیم می گیرید که نمی خواهید اضافه کنید
آن را به تعهد خود. شما می توانید در حالی که تغییرات خود را حفظ کرده اید، فایل را از فهرست حذف کنید
با گیت ریست
بازنشانی git $ -- frotz.c (1)
$ git commit -m "تعیین فایل ها در فهرست" (2)
$ git را اضافه کنید frotz.c (3)
1. این فایل را از فهرست حذف می کند در حالی که آن را در فهرست کار نگه می دارد.
2. این همه تغییرات دیگر در شاخص را انجام می دهد.
3. فایل را دوباره به فهرست اضافه می کند.
تغییرات را در درخت کاری حفظ کنید و در عین حال برخی از تعهدات قبلی را کنار بگذارید
فرض کنید روی چیزی کار می کنید و آن را متعهد می کنید و سپس کار را ادامه می دهید
کمی بیشتر، اما اکنون فکر می کنید آنچه در درخت کاری خود دارید باید در آن باشد
شاخه دیگری که هیچ ارتباطی با آنچه قبلاً مرتکب شده اید ندارد. تو می توانی
یک شاخه جدید راه اندازی کنید و آن را بازنشانی کنید و در عین حال تغییرات را در درخت کاری خود حفظ کنید.
شروع تگ git $
$ git checkout -b branch1
$ ویرایش
$ git commit ... (1)
$ ویرایش
$ git checkout -b branch2 (2)
$ git reset --keep start (3)
1. این اولین ویرایش های شما را در شاخه 1 انجام می دهد.
2. در دنیای ایده آل، می توانستید متوجه شوید که تعهد قبلی به آن تعلق ندارد
به موضوع جدید هنگامی که ایجاد کردید و به شاخه 2 تغییر دادید (یعنی "git checkout -b
branch2 start")، اما هیچ کس کامل نیست.
3. اما شما می توانید از "reset --keep" برای حذف commit ناخواسته پس از تغییر به آن استفاده کنید
"شعبه 2".
بحث
جداول زیر نشان می دهد که هنگام اجرا چه اتفاقی می افتد:
git reset --option target
برای بازنشانی HEAD به یک commit (هدف) دیگر با گزینه های مختلف تنظیم مجدد بسته به
وضعیت فایل ها
در این جداول، A، B، C و D چند حالت مختلف یک فایل هستند. مثلا اولی
خط جدول اول به این معنی است که اگر یک فایل در حالت A در درخت کار باشد، در حالت B باشد
در ایندکس، در حالت C در HEAD و در حالت D در هدف، سپس "git reset --soft
target" فایل را در درخت کاری در حالت A و در فهرست در حالت B باقی می گذارد
HEAD (یعنی نوک شاخه فعلی، اگر روی یکی هستید) را بازنشانی می کند (یعنی حرکت می دهد)
"target" (که فایل را در حالت D دارد).
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
ABCD -- نرم ABD
-- مخلوط اضافه کردن
--DDD سخت
-- ادغام (مجاز)
-- نگه داشتن (مجاز)
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
ABCC -- ABC نرم
-- ACC مختلط
- CCC سخت
-- ادغام (مجاز)
-- ACC را نگه دارید
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
BBCD -- نرم BBD
--BDD مخلوط
--DDD سخت
-- DDD را ادغام کنید
-- نگه داشتن (مجاز)
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
BBCC -- بی بی سی نرم
-- BCC مخلوط
- CCC سخت
-- CCC را ادغام کنید
- BCC را نگه دارید
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
BCCD -- BCD نرم
--BDD مخلوط
--DDD سخت
-- ادغام (مجاز)
-- نگه داشتن (مجاز)
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
BCCC -- BCC نرم
-- BCC مخلوط
- CCC سخت
- ادغام BCC
- BCC را نگه دارید
منظور از "reset --merge" برای بازنشانی از ادغام دارای تضاد است. هر گونه ادغام
عملیات تضمین می کند که فایل درخت کاری که در ادغام شرکت دارد، این کار را نمی کند
قبل از شروع، ایندکس را تغییر دهید و نتیجه را در آن بنویسید
درخت کار بنابراین اگر مقداری تفاوت بین شاخص و هدف و همچنین
بین شاخص و درخت کار، پس به این معنی است که ما از a خارج نمی شویم
بیان کنید که عملیات ادغام پس از شکست با درگیری باقی مانده است. به همین دلیل است که ما اجازه نمی دهیم
گزینه --merge در این مورد.
منظور از "reset --keep" برای حذف برخی از آخرین commit ها در جریان فعلی است.
شاخه در حالی که تغییرات در درخت کار را حفظ می کند. اگر ممکن است درگیری بین
تغییرات در commitی که میخواهیم حذف کنیم و تغییرات درخت کاری که میخواهیم انجام دهیم
نگه دارید، تنظیم مجدد مجاز نیست. به همین دلیل در صورت وجود هر دو تغییر غیر مجاز است
بین درخت کار و HEAD و بین HEAD و هدف. برای ایمن بودن نیز همینطور است
زمانی که ورودی های ادغام نشده وجود داشته باشد، مجاز نیست.
جداول زیر نشان می دهد که وقتی ورودی های ادغام نشده وجود دارد چه اتفاقی می افتد:
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
XUAB -- نرم (غیر مجاز)
--XBB مختلط
--BBB سخت
-- BBB را ادغام کنید
-- نگه داشتن (مجاز)
شاخص کاری HEAD هدف شاخص کاری HEAD
-------------------------------------------------- -
XUAA -- نرم (غیر مجاز)
-- XAA مخلوط
-- AAA سخت
-- AAA را ادغام کنید
-- نگه داشتن (مجاز)
X به معنای هر حالت و U به معنای شاخص ادغام نشده است.
GIT
بخشی از دستگاه گوارش(1) سوئیت
با استفاده از سرویسهای onworks.net از git-reset آنلاین استفاده کنید