انگلیسیفرانسویاسپانیایی

فاویکون OnWorks

git-rebase - آنلاین در ابر

git-rebase را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور git-rebase است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


git-rebase - Local port-port به هد upstream به روز شده متعهد می شود

خلاصه


دستگاه گوارش تخفیف [-i | --تعاملی] [گزینه ها] [--exec ] [--به سوی ]
[ [ ]]
دستگاه گوارش تخفیف [-i | --تعاملی] [گزینه ها] [--exec ] [--به سوی ]
-- ریشه [ ]
دستگاه گوارش تخفیف --ادامه | --پرش | --سقط | --ویرایش-todo

شرح


اگر مشخص شده است، دستگاه گوارش تخفیف پرداخت خودکار git را انجام خواهد داد
قبل از انجام هر کار دیگری در غیر این صورت روی شاخه فعلی باقی می ماند.

اگر مشخص نشده است، بالادست در شاخه پیکربندی شده است. .ریموت و
شاخه. گزینه های .merge استفاده خواهد شد (نگاه کنید به گیت(1) برای جزئیات) و
گزینه --fork-point فرض می شود. اگر در حال حاضر در هیچ شعبه ای نیستید یا در حال حاضر
شعبه بالادستی پیکربندی نشده است، rebase لغو خواهد شد.

تمام تغییراتی که توسط commit ها در شاخه فعلی ایجاد شده است اما در آن وجود ندارد ذخیره می شوند
به یک منطقه موقت این همان مجموعه ای از commit است که با git log نشان داده می شود
..سر؛ یا با git log 'fork_point'..HEAD، اگر --fork-point فعال است (به
توضیحات در --fork-point زیر)؛ یا با git log HEAD، اگر گزینه --root مشخص شده باشد.

شاخه فعلی به حالت اولیه بازنشانی می شود ، یا اگر گزینه --onto ارائه شده باشد.
این دقیقاً همان اثر تنظیم مجدد git --hard را دارد (یا ). ORIG_HEAD است
قبل از تنظیم مجدد، به نوک شاخه اشاره کنید.

تعهداتی که قبلاً در ناحیه موقت ذخیره شده بودند، مجدداً در قسمت اعمال می شوند
شاخه فعلی، یکی یکی، به ترتیب. توجه داشته باشید که هر commit در HEAD که معرفی می کند
تغییرات متنی مشابه یک commit در HEAD.. حذف شده اند (یعنی یک پچ قبلاً
پذیرفته شده در بالادست با پیام commit یا مهر زمانی متفاوت نادیده گرفته می شود).

ممکن است شکست ادغام مانع از کامل شدن این فرآیند شود
خودکار شما باید هر گونه شکست ادغامی را حل کنید و git rebase --continue را اجرا کنید.
گزینه دیگر دور زدن commit است که باعث شکست ادغام شده با git rebase
-- پرش برای بررسی اصل و فایل های کاری .git/rebase-apply را حذف کنید،
به جای آن از دستور git rebase --abort استفاده کنید.

فرض کنید تاریخچه زیر وجود دارد و شاخه فعلی "موضوع" است:

موضوع الف---ب---ج
/
D---E---F---G استاد

از این نقطه، نتیجه یکی از دستورات زیر است:

git rebase master
موضوع اصلی git rebase

خواهد بود:

موضوع A'--B'--C'
/
D---E---F---G استاد

توجه: شکل اخیر فقط مختصری از مبحث پرداخت git است که به دنبال آن git rebase است
استاد. هنگامی که rebase از موضوع خارج می شود، شعبه بررسی شده باقی می ماند.

اگر شاخه بالادستی قبلاً حاوی تغییری است که شما ایجاد کرده اید (مثلاً به این دلیل که یک پست را ارسال کرده اید
وصله ای که در بالادست اعمال شد)، سپس آن commit نادیده گرفته می شود. مثلا دویدن
git rebase master در تاریخچه زیر (که در آن A' و A مجموعه یکسانی را معرفی می کنند
تغییر می کند، اما اطلاعات committer متفاوتی دارد):

موضوع الف---ب---ج
/
D---E---A'---F استاد

منجر به:

موضوع B'---C'
/
D---E---A'---F استاد

در اینجا نحوه پیوند یک شاخه موضوعی بر اساس یک شاخه به شاخه دیگر است تا وانمود کنید
که با استفاده از rebase --onto، شاخه موضوع را از شاخه دوم جدا کردید.

ابتدا بیایید شما را فرض کنیم موضوع بر اساس شاخه است بعد. به عنوان مثال، یک ویژگی توسعه یافته در
موضوع بستگی به عملکردی دارد که در آن یافت می شود بعد.

o---o---o---o---o استاد
\
o---o---o---o---o بعدی
\
o---o---o موضوع

می خواهیم بسازیم موضوع دوشاخه از شاخه استاد; به عنوان مثال، به دلیل عملکرد روشن است
که موضوع بستگی به پایدارتر ادغام شد استاد شاخه. ما درختمان را می خواهیم
مانند این نگاه کنید:

o---o---o---o---o استاد
| \
| موضوع o'--o'--o
\
o---o---o---o---o بعدی

با استفاده از دستور زیر می توانیم این را دریافت کنیم:

git rebase --onto master مبحث بعدی

مثال دیگری از گزینه --onto، تغییر پایه بخشی از یک شاخه است. اگر موارد زیر را داشته باشیم
وضعیت:

H---I---J مبحثB
/
E---F---G موضوعA
/
الف---ب---ج---د استاد

سپس فرمان

git rebase --onto master topicA topicB

منجر به:

موضوع H'--I'--J'B
/
| E---F---G موضوعA
|/
الف---ب---ج---د استاد

این زمانی مفید است که topicB به topicA بستگی ندارد.

طیف وسیعی از commit ها را نیز می توان با rebase حذف کرد. اگر شرایط زیر را داشته باشیم:

E---F---G---H---I---J موضوعA

سپس فرمان

git rebase --onto topicA~5 topicA~3 topicA

منجر به حذف commit های F و G می شود:

E---H'---I'---J' موضوعA

این در صورتی مفید است که F و G به نحوی نقص داشته باشند، یا نباید بخشی از موضوع A باشند. توجه داشته باشید
که استدلال به --onto و پارامتر می تواند هر commit-ish معتبری باشد.

در صورت درگیری، دستگاه گوارش تخفیف در اولین تعهد مشکل ساز متوقف می شود و می رود
نشانگرهای تضاد در درخت شما می توانید استفاده کنید دستگاه گوارش تفاوت برای پیدا کردن نشانگرها (<<<<<<) و ساختن
ویرایش ها برای حل تعارض برای هر فایلی که ویرایش می کنید، باید به Git بگویید که
تضاد حل شده است، معمولاً با این کار انجام می شود

git add

پس از رفع تضاد به صورت دستی و به روز رسانی شاخص با وضوح مورد نظر،
شما می توانید فرآیند rebasing را با

git rebase -- ادامه

از طرف دیگر، می توانید آن را لغو کنید دستگاه گوارش تخفیف با

git rebase --abort

پیکربندی


rebase.stat
آیا برای نشان دادن تفاوتی از آنچه در بالادست از آخرین تغییر مجدد تغییر کرده است. نادرست توسط
به طور پیش فرض

rebase.autoSquash
اگر روی true تنظیم شود فعال کنید --اتوسکواش گزینه به صورت پیش فرض

rebase.autoStash
اگر روی true تنظیم شود فعال کنید --autostash گزینه به صورت پیش فرض

rebase.missingCommitsCheck
اگر روی "هشدار" تنظیم شده است، هشدارهای مربوط به تعهدات حذف شده را در حالت تعاملی چاپ کنید. اگر تنظیم شود
"خطا"، اخطارها را چاپ کنید و تغییر پایه را متوقف کنید. اگر روی "نادیده گرفتن" تنظیم شود، هیچ بررسی وجود ندارد
انجام شده. "نادیده گرفتن" به طور پیش فرض.

rebase.instructionFormat
قالب لیست commit سفارشی برای استفاده در طول یک --در ارتباط بودن تغییر پایه

OPTIONS


--به سوی
نقطه شروعی که در آن commit های جدید ایجاد می شود. اگر گزینه --onto نیست
مشخص شده، نقطه شروع است . ممکن است هر تعهد معتبری باشد و نه فقط یک
نام شعبه موجود

به عنوان یک مورد خاص، می توانید از "A...B" به عنوان میانبر برای پایه ادغام A و B if استفاده کنید
دقیقا یک پایه ادغام وجود دارد. شما می توانید حداکثر یکی از A و B را که در آنها وجود دارد کنار بگذارید
در صورتی که به طور پیش فرض روی HEAD باشد.


شاخه بالادست برای مقایسه با. ممکن است هر تعهد معتبری باشد، نه فقط موجود
نام شعبه. به طور پیش فرض به بالادست پیکربندی شده برای شاخه فعلی.


شعبه کاری؛ پیش فرض HEAD است.

--ادامه هید
پس از رفع تضاد ادغام، فرآیند rebasing را مجدداً راه اندازی کنید.

-- سقط
عملیات rebase را لغو کنید و HEAD را به شاخه اصلی بازنشانی کنید. اگر بود
به شرطی که وقتی عملیات rebase شروع شد، HEAD به حالت اولیه بازنشانی می‌شود .
در غیر این صورت، HEAD به جایی که در زمان شروع عملیات تغییر پایه بود، بازنشانی می‌شود.

--خالی نگه داشتن
تعهداتی را حفظ کنید که هیچ چیز را از والدین خود در نتیجه تغییر نمی دهد.

-- پرش
با رد کردن وصله فعلی، فرآیند rebasing را مجدداً راه اندازی کنید.

--ویرایش-todo
فهرست کارها را در طول یک بازبنیاد تعاملی ویرایش کنید.

-m، --ادغام
از استراتژی های ادغام برای تغییر پایه استفاده کنید. وقتی از استراتژی ادغام بازگشتی (پیش‌فرض) استفاده می‌شود،
این اجازه می دهد تا rebase از تغییر نام در سمت بالادست آگاه باشد.

توجه داشته باشید که ادغام rebase با پخش مجدد هر commit از شاخه کاری در بالا کار می کند
از شاخه. به همین دلیل، هنگامی که یک درگیری ادغام اتفاق می افتد، طرف
گزارش شده است خرس سریالی است که تا به حال بازسازی شده است، با شروع ، و خودشان is
شاخه کار به عبارت دیگر، طرفین تعویض می شوند.

-s ، --استراتژی=
از استراتژی ادغام داده شده استفاده کنید. اگر گزینه -s وجود ندارد دستگاه گوارش ادغام بازگشتی استفاده شده است
بجای. این به معنای ادغام است.

زیرا دستگاه گوارش تخفیف هر commit را از شاخه کاری در بالای آن بازپخش می کند
شاخه با استفاده از استراتژی داده شده، با استفاده از خرس استراتژی به سادگی کنار گذاشته می شود
همه وصله ها از ، که کمی منطقی است.

-ایکس ، --strategy-option=
عبور کنید از طریق استراتژی ادغام. این به معنی ---merge and if
هیچ استراتژی مشخص نشده است، -s بازگشتی. به معکوس شدن توجه کنید خرس و خودشان as
در بالا برای گزینه -m ذکر شده است.

-S[ ]، --gpg-sign[= ]
GPG-sign متعهد می شود. آرگومان keyid اختیاری است و به صورت پیش فرض روی committer قرار می گیرد
هویت؛ اگر مشخص شده باشد، باید بدون فاصله به گزینه چسبیده شود.

-q، --آرام
ساکت باش. به معنای --no-stat است.

-v، -- پرحرف
پرحرف باشید به معنای --stat است.

--stat
نشان دادن تفاوتی از آنچه که در بالادست از آخرین تغییر بازرگانی تغییر کرده است. diffstat نیز هست
توسط گزینه پیکربندی rebase.stat کنترل می شود.

-n، --no-stat
یک diffstat را به عنوان بخشی از فرآیند rebase نشان ندهید.

-- بدون تأیید
این گزینه قلاب پیش بازبنیاد را دور می زند. همچنین ببینید githooks(5).

-- تأیید کنید
به قلاب پیش‌بازبنیاد اجازه می‌دهد که پیش‌فرض است. از این گزینه می توان استفاده کرد
لغو - بدون تأیید. همچنین ببینید githooks(5).

-C
حداقل اطمینان حاصل کنید خطوط بافت اطراف قبل و بعد از هر تغییر مطابقت دارند.
وقتی خطوط کمتری از بافت اطراف وجود داشته باشد، همه آنها باید مطابقت داشته باشند. به طور پیش فرض شماره
زمینه همیشه نادیده گرفته می شود.

-f، --force-rebase
حتی اگر شاخه فعلی به‌روز باشد و دستور بدون آن باشد، rebase را اجباری کنید
-- زور بدون انجام کاری برمی گشت.

ممکن است این (یا --no-ff با یک rebase تعاملی) پس از برگرداندن a مفید باشد
شاخه موضوع ادغام می شود، زیرا این گزینه شاخه موضوع را با commit های تازه ایجاد می کند
را می توان بدون نیاز به "برگرداندن بازگشت" با موفقیت دوباره ترکیب کرد (به قسمت مراجعه کنید
revert-a-faulty-merge چگونه[1] برای جزئیات).

---نقطه چنگال، --بدون انشعاب-نقطه
از reflog برای پیدا کردن یک جد مشترک بهتر بین استفاده کنید و چه زمانی
محاسبه کدام commit ها توسط .

وقتی --fork-point فعال است، فورک_نقطه به جای استفاده خواهد شد به
محاسبه مجموعه تعهدات برای rebase، جایی که فورک_نقطه نتیجه git است
merge-base --fork-point فرمان (نگاه کنید به git-merge-base(1)). اگر
فورک_نقطه به پایان می رسد خالی است، به عنوان جایگزین استفاده خواهد شد.

اگر هر کدام یا -root در خط فرمان داده می شود، سپس پیش فرض است
--no-fork-point، در غیر این صورت پیش فرض --fork-point است.

--نادیده گرفتن-فضای سفید، --واسطه=
این پرچم ها به دستگاه گوارش درخواست برنامه (نگاه کنید به git-apply(1)) که اعمال می شود
پچ با گزینه --interactive ناسازگار است.

--committer-date-is-author-date، --نادیده گرفتن-تاریخ
این پرچم ها به دستگاه گوارش am تا به راحتی تاریخ های commit های تغییر داده شده را تغییر دهید
(نگاه کنید به git-am(1)). با گزینه --interactive ناسازگار است.

-i، --تعاملی
فهرستی از commit هایی که در شرف تغییر هستند تهیه کنید. به کاربر اجازه دهید آن لیست را ویرایش کند
قبل از تغییر پایه این حالت همچنین می تواند برای تقسیم commit ها استفاده شود (به SPLITTING COMMITS مراجعه کنید
در زیر).

فرمت لیست commit را می توان با تنظیم گزینه پیکربندی تغییر داد
rebase.instructionFormat. یک فرمت دستورالعمل سفارشی شده به طور خودکار دارای این خواهد بود
هش commit طولانی به قالب اضافه شده است.

-p، --preserve-ادغام می شود
به جای مسطح کردن تاریخچه با پخش مجدد commits a merge، commit های ادغام را دوباره ایجاد کنید
commit معرفی می کند. ادغام حل تضادها یا اصلاحات دستی برای ادغام تعهدات
حفظ نمی شوند.

این از ماشین تعاملی -- به صورت داخلی استفاده می کند، اما از ترکیب آن با
- گزینه تعاملی به صراحت به طور کلی ایده خوبی نیست مگر اینکه بدانید چه چیزی دارید
انجام می دهند (اشکالات زیر را ببینید).

-ایکس ، -- اجرا
ضمیمه "exec بعد از هر خط یک commit در تاریخچه نهایی ایجاد می کند. اراده
به عنوان یک یا چند دستور پوسته تفسیر شود.

این گزینه فقط با گزینه ---interactive قابل استفاده است (به حالت تعاملی مراجعه کنید
در زیر).

شما می توانید چندین دستور را با استفاده از یک نمونه از --exec با چندین مورد اجرا کنید
دستورات:

git rebase -i --exec "cmd1 && cmd2 &&..."

یا با دادن بیش از یک --exec:

git rebase -i --exec "cmd1" --exec "cmd2" --exec ...

اگر از --autosquash استفاده شود، خطوط "exec" برای واسطه اضافه نمی شود
commit می کند و فقط در پایان هر سری اسکواش/رفع ظاهر می شود.

-- ریشه
همه تعهدات قابل دسترسی از را تغییر دهید ، به جای محدود کردن آنها با یک
. این به شما امکان می دهد تا commit(های) ریشه را در یک شاخه مجدداً پایه گذاری کنید. هنگام استفاده با
- روی، از تغییراتی که قبلاً در آن موجود است صرفنظر می کند (بجای )
در حالی که بدون ---onto روی هر تغییری عمل خواهد کرد. هنگامی که با هر دو استفاده می شود
--onto و --preserve-ادغام می شود، تمام commit های ریشه برای داشتن بازنویسی خواهند شد مانند
در عوض والدین

--autosquash، --no-autosquash
هنگامی که پیام commit log با "squash! ..." (یا "fixup! ...") شروع می شود، و وجود دارد
یک commit که عنوان آن با همان ... شروع می شود، به طور خودکار لیست کارهای انجام شده را تغییر دهید
rebase -i به طوری که commit علامت گذاری شده برای squashing درست بعد از commit بیاید.
تغییر دهید، و عمل commit منتقل شده را از انتخاب به اسکواش (یا فیکس آپ) تغییر دهید.
در صورتی که به یک مورد اشاره کردید، «تعمیر!» یا «اسکواش!» بعدی را پس از اولین مورد نادیده می‌گیرد.
فیکس آپ/اسکواش قبلی با git commit --fixup/--squash.

این گزینه فقط زمانی معتبر است که --در ارتباط بودن گزینه استفاده می شود.

اگر --اتوسکواش گزینه به طور پیش فرض با استفاده از متغیر پیکربندی فعال می شود
rebase.autoSquash، از این گزینه می توان برای لغو و غیرفعال کردن این تنظیمات استفاده کرد.

--autostash، --no-autostash
قبل از شروع عملیات به صورت خودکار یک ذخیره موقت ایجاد کنید و بعد از آن اعمال کنید
عملیات به پایان می رسد این به این معنی است که می توانید rebase را روی یک درخت کاری کثیف اجرا کنید. با این حال،
با احتیاط استفاده کنید: برنامه ذخیره نهایی پس از یک تغییر مجدد موفقیت آمیز ممکن است منجر شود
درگیری های غیر پیش پا افتاده

-- بدون خاموش
با ---تعاملی، به جای فوروارد کردن سریع، همه تعهدات مبتنی بر بازپایه را انتخاب کنید
آنهایی که تغییر نکرده اند این تضمین می کند که کل تاریخچه شعبه بازسازی شده است
متشکل از تعهدات جدید

بدون --interactive، این مترادف برای --force-rebase است.

ممکن است پس از برگرداندن ادغام شاخه موضوعی، مانند این گزینه، این کار مفید باشد
شاخه موضوع را با commit های تازه بازسازی می کند تا بتوان آن را با موفقیت دوباره ایجاد کرد
بدون نیاز به "برگرداندن بازگشت" (به revert-a-faulty-merge چگونه[1] برای
جزئیات).

ادغام استراتژی ها


مکانیسم ادغام (دستورهای git merge و git pull) به backend اجازه می دهد ادغام کردن استراتژی ها
با گزینه -s انتخاب شود. برخی از استراتژی ها نیز می توانند گزینه های خود را انتخاب کنند، که می تواند باشد
با دادن -X گذشت آرگومان هایی برای ادغام git و/یا git pull.

تصمیم
این فقط می تواند دو سر را حل کند (یعنی شاخه فعلی و شاخه دیگری که کشیده اید
از) با استفاده از یک الگوریتم ادغام سه طرفه. سعی می کند ادغام متقاطع را با دقت تشخیص دهد
ابهامات و به طور کلی امن و سریع در نظر گرفته می شود.

بازگشتی
این فقط می تواند دو هد را با استفاده از یک الگوریتم ادغام سه طرفه حل کند. زمانی که بیشتر از
یکی از اجداد مشترک که می تواند برای ادغام 3 طرفه استفاده شود، درخت ادغام شده ای را ایجاد می کند
اجداد مشترک و از آن به عنوان درخت مرجع برای ادغام 3 طرفه استفاده می کند. این دارد
گزارش شده است که منجر به تداخل ادغام کمتری بدون ایجاد ادغام نادرست توسط آزمایش می شود
انجام شده در تعهدات ادغام واقعی برگرفته از تاریخچه توسعه هسته لینوکس 2.6.
علاوه بر این، این می‌تواند ادغام‌هایی را که شامل تغییر نام‌ها می‌شود، شناسایی و مدیریت کند. این پیش فرض است
استراتژی ادغام هنگام کشیدن یا ادغام یک شاخه.

La بازگشتی استراتژی می تواند گزینه های زیر را انجام دهد:

خرس
این گزینه باعث می‌شود که بخش‌های متضاد به‌طور خودکار با فایده‌سازی حل و فصل شوند ما
نسخه تغییرات از درخت دیگر که با طرف ما در تضاد نیست
به نتیجه ادغام منعکس می شود. برای یک فایل باینری، کل محتویات گرفته می شود
از طرف ما.

این را نباید با آن اشتباه گرفت خرس استراتژی ادغام، که حتی به نظر نمی رسد
در آنچه که درخت دیگر اصلاً حاوی آن است. هر کاری که درخت دیگر انجام داده را دور می اندازد،
اعلام کرد ما تاریخ شامل همه چیزهایی است که در آن اتفاق افتاده است.

خودشان
این برعکس است خرس.

صبر
با این گزینه ، ادغام بازگشتی برای جلوگیری از ادغام نادرست زمان کمی صرف می کند
که گاهی اوقات به دلیل خطوط تطبیق بی‌اهمیت (مثلاً مهاربندی‌های متمایز).
کارکرد). وقتی شاخه هایی که باید ادغام شوند به شدت از هم جدا شده اند از این استفاده کنید. همچنین ببینید
git-diff(1) - صبر.

diff-algorithm=[صبر|حداقل|هیستوگرام|مایرز]
می گوید ادغام بازگشتی برای استفاده از یک الگوریتم متفاوت متفاوت، که می تواند به جلوگیری از آن کمک کند
ادغام نادرست که به دلیل خطوط تطبیق بی اهمیت (مانند مهاربندها از
توابع متمایز). همچنین ببینید git-diff(1) الگوریتم-diff.

نادیده گرفتن-فضا-تغییر، نادیده گرفتن-همه-فضا، نادیده گرفتن-فضا-در-ایول
خطوط با نوع تغییر فضای خالی مشخص شده را بدون تغییر برای تلقی می کند
به خاطر ادغام سه طرفه تغییرات فضای خالی با سایر تغییرات یک خط ترکیب شده است
نادیده گرفته نمی شوند. همچنین ببینید git-diff(1) -b، -w، و --ignore-space-at-eol.

· اگر شان نسخه فقط تغییرات فضای خالی را به یک خط معرفی می کند، ما نسخه است
استفاده شده؛

· اگر ما نسخه تغییرات فضای خالی را معرفی می کند اما شان نسخه شامل a
تغییر اساسی، شان نسخه استفاده می شود؛

· در غیر این صورت، ادغام به روش معمول انجام می شود.

عادی سازی مجدد
این یک بررسی مجازی و ورود به هر سه مرحله از یک فایل را اجرا می کند
حل ادغام سه طرفه این گزینه برای ادغام شاخه ها استفاده می شود
با فیلترهای مختلف تمیز یا قوانین عادی سازی پایان خط. رجوع کنید به "ادغام
شعبه‌هایی با ویژگی‌های checkin/checkout متفاوت" در ویژگی های gitat(5) برای
جزئیات.

بدون عادی سازی
گزینه Renormalize را غیرفعال می کند. این merge.renormalize را لغو می کند
متغیر پیکربندی

rename-threshold=
آستانه شباهت مورد استفاده برای تشخیص تغییر نام را کنترل می کند. همچنین ببینید git-diff(1)
-م.

درخت فرعی[= ]
این گزینه یک شکل پیشرفته تر است زیر درخت استراتژی، جایی که استراتژی می سازد
حدس در مورد چگونگی جابجایی دو درخت برای مطابقت با یکدیگر هنگام ادغام.
در عوض، مسیر مشخص شده پیشوند (یا از ابتدا حذف شده) برای ساختن است
شکل دو درخت برای مطابقت.

اختاپوس
این موارد با بیش از دو سر را حل می کند، اما از انجام یک ادغام پیچیده آن خودداری می کند
نیاز به وضوح دستی دارد اساساً برای دسته بندی شاخه موضوعی استفاده می شود
سرها با هم این استراتژی ادغام پیش‌فرض هنگام کشیدن یا ادغام بیش از این است
یک شاخه

خرس
این هر تعداد سر را حل می کند، اما درخت حاصل از ادغام همیشه همین است
از سر شاخه فعلی، به طور موثری همه تغییرات را نسبت به سایر شاخه ها نادیده می گیرد.
قرار است از آن برای جایگزینی تاریخچه توسعه قدیمی شاخه های جانبی استفاده شود. توجه داشته باشید
که این با گزینه -Xours متفاوت است بازگشتی استراتژی ادغام

زیر درخت
این یک استراتژی بازگشتی اصلاح شده است. هنگام ادغام درختان A و B، اگر B مطابقت دارد
یک زیردرخت از A، B ابتدا برای مطابقت با ساختار درختی A، به جای تنظیم می شود
خواندن درختان در همان سطح این تعدیل در مورد مشترک نیز انجام می شود
درخت اجداد

با استراتژی هایی که از ادغام سه طرفه استفاده می کنند (از جمله پیش فرض، بازگشتی) در صورت تغییر
روی هر دو شاخه ساخته می شود، اما بعداً روی یکی از شاخه ها برگردانده می شود، این تغییر خواهد بود
موجود در نتیجه ادغام شده؛ برخی افراد این رفتار را گیج کننده می دانند. رخ می دهد زیرا
هنگام انجام ادغام فقط سرها و پایه ادغام در نظر گرفته می شوند، نه ادغام
فردی متعهد می شود بنابراین الگوریتم ادغام، تغییر معکوس‌شده را هیچ در نظر می‌گیرد
اصلاً تغییر کند و به جای آن نسخه تغییر یافته را جایگزین کند.

NOTES


شما باید مفاهیم استفاده را درک کنید دستگاه گوارش تخفیف در یک مخزن که به اشتراک می گذارید.
همچنین Recovering FROM UPSTREAM REBASE را در زیر ببینید.

هنگامی که دستور git-rebase اجرا می شود، ابتدا یک قلاب "pre-rebase" را اجرا می کند.
وجود دارد. می‌توانید از این قلاب برای بررسی سلامت عقل استفاده کنید و اگر اینطور نیست، rebase را رد کنید
مناسب. لطفاً برای نمونه اسکریپت هوک پیش بازبنیاد قالب را ببینید.

پس از اتمام، شعبه فعلی خواهد بود.

در ارتباط بودن MODE


Rebasing به صورت تعاملی به این معنی است که شما فرصتی برای ویرایش commit هایی دارید که دوباره پایه گذاری شده اند.
می‌توانید commit‌ها را مجدداً مرتب کنید، و می‌توانید آنها را حذف کنید (علف‌های هرز بد یا غیره).
وصله های ناخواسته).

حالت تعاملی برای این نوع گردش کار در نظر گرفته شده است:

1. ایده فوق العاده ای داشته باشید

2. کد را هک کنید

3. یک سری را برای ارسال آماده کنید

4. ارسال کنید

که در آن نقطه 2. شامل چند نمونه از

الف) استفاده منظم

1. کاری را که شایسته تعهد است به پایان برسانید

2. متعهد شدن

ب) تثبیت مستقل

1. متوجه شوید که چیزی کار نمی کند

2. رفع کنید

3. آن را متعهد کنید

گاهی اوقات چیزی که در b.2 ثابت می شود. نمی توان آن را به صورت نه چندان کامل اصلاح کرد
رفع می شود، زیرا آن commit عمیقاً در یک سری پچ دفن شده است. دقیقا همینه
rebase تعاملی برای: استفاده از آن پس از مقدار زیادی "a" و "b"، با مرتب کردن مجدد و
ویرایش commit ها و له کردن چندین commit در یک.

آن را با آخرین commitی که می‌خواهید حفظ کنید، شروع کنید:

git rebase -i

یک ویرایشگر با تمام تعهدات در شاخه فعلی شما فعال می شود (با نادیده گرفتن ادغام
commits) که بعد از commit داده شده می آیند. می توانید commit های موجود در این لیست را مجدداً ترتیب دهید
دلتان می خواهد، و می توانید آنها را حذف کنید. لیست کم و بیش به این شکل است:

انتخاب deadbee تک خط این commit
fa1afe1 یک خط commit بعدی را انتخاب کنید
...

توضیحات تک خطی صرفاً برای لذت شماست. دستگاه گوارش تخفیف به آنها نگاه نخواهد کرد
اما در نام های commit ("deadbee" و "fa1afe1" در این مثال)، بنابراین حذف یا
اسامی را ویرایش کنید

با جایگزین کردن دستور "انتخاب" با دستور "ویرایش" می توانید متوجه شوید دستگاه گوارش تخفیف برای متوقف کردن
پس از اعمال آن commit، به طوری که بتوانید فایل ها و/یا پیام commit را ویرایش کنید،
commit را اصلاح کنید و به rebasing ادامه دهید.

اگر فقط می خواهید پیام commit را برای یک commit ویرایش کنید، دستور "انتخاب" را با آن جایگزین کنید
دستور "reword".

برای حذف یک commit، دستور "انتخاب" را با "قطع" جایگزین کنید، یا فقط مطابقت را حذف کنید
خط.

اگر می‌خواهید دو یا چند commit را به یکی بریزید، دستور "pick" را جایگزین کنید
ارتکاب دوم و متعاقب آن با «اسکواش» یا «رفع». اگر ارتکاب ها متفاوت بود
نویسندگان، commit فولد شده به نویسنده کامیت اول نسبت داده می شود. در
پیام commit پیشنهادی برای commit فولد شده الحاق پیام های commit است
مربوط به اولین commit و آنهایی که فرمان "squash" دارند، اما پیام های commit را حذف می کند.
از commit با دستور "fixup".

دستگاه گوارش تخفیف زمانی که "انتخاب" با "ویرایش" جایگزین شود یا زمانی که دستوری به دلیل ناموفق بودن، متوقف می شود
برای ادغام خطاها پس از اتمام ویرایش و/یا حل تضادها، می توانید ادامه دهید
با git rebase -- ادامه دهید.

به عنوان مثال، اگر می خواهید 5 commit آخر را دوباره ترتیب دهید، به طوری که آنچه HEAD~4 بود تبدیل شود
سر جدید برای رسیدن به آن، شما تماس بگیرید دستگاه گوارش تخفیف مثل این:

$ git rebase -i HEAD~5

و اولین پچ را به انتهای لیست منتقل کنید.

اگر سابقه ای مانند این دارید، ممکن است بخواهید ادغام ها را حفظ کنید:

X
\
الف---م---ب
/
---o---O---P---Q

فرض کنید می خواهید شاخه جانبی را که از "A" شروع می شود به "Q" تغییر دهید. مطمئن شوید که
HEAD فعلی "B" است و تماس بگیرید

$ git rebase -i -p --onto QO

مرتب سازی مجدد و ویرایش تعهدات معمولاً مراحل میانی آزمایش نشده را ایجاد می کند. ممکن است بخواهید
بررسی کنید که ویرایش تاریخچه شما با اجرای یک تست چیزی را خراب نکرده است یا حداقل
کامپایل مجدد در نقاط میانی تاریخ با استفاده از دستور "exec" (میانبر "x").
می توانید این کار را با ایجاد یک لیست کار مانند این انجام دهید:

گزینه deadbee را پیاده سازی کنید XXX
fixup f1a5c00 رفع مشکل در ویژگی XXX
ساخت اجرایی
انتخاب c0ffeee The oneline commit بعدی
ویرایش deadbab The oneline of the commit after
exec cd subdir; تست کنید
...

هنگامی که دستوری از کار بیفتد (یعنی با وضعیت غیر 0 خارج شود) بازبسیار تعاملی متوقف می شود
به شما فرصتی می دهد تا مشکل را برطرف کنید. می توانید با git rebase ادامه دهید --continue.

دستور "exec" دستور را در یک پوسته (مشخص شده در $SHELL یا the) اجرا می کند
پوسته پیش‌فرض اگر $SHELL تنظیم نشده باشد، بنابراین می‌توانید از ویژگی‌های پوسته (مانند "cd"، ">"، ";" استفاده کنید.
...). دستور از ریشه درخت کار اجرا می شود.

$ git rebase -i --exec "make test"

این دستور به شما امکان می دهد بررسی کنید که commit های میانی قابل کامپایل هستند. فهرست کارها
چنین می شود:

5928aea one را انتخاب کنید
exec make test
04d0fda دو را انتخاب کنید
exec make test
ba46169 سه را انتخاب کنید
exec make test
f4593f9 چهار را انتخاب کنید
exec make test

تقسیم کردن متعهد می شود


در حالت تعاملی، می توانید commit ها را با عمل "ویرایش" علامت گذاری کنید. با این حال، این نیست
لزوما به این معنی است دستگاه گوارش تخفیف انتظار دارد که نتیجه این ویرایش دقیقاً یک commit باشد.
در واقع، شما می توانید commit را لغو کنید، یا می توانید commit های دیگری را اضافه کنید. از این می توان برای تقسیم a استفاده کرد
به دو قسمت متعهد شوید:

· یک rebase تعاملی را با git rebase -i شروع کنید ^، کجا تعهد است
شما می خواهید تقسیم کنید در واقع، هر محدوده commit تا زمانی که شامل آن باشد، انجام خواهد شد
مرتکب شدن.

· تعهدی را که می خواهید تقسیم کنید با عمل "ویرایش" علامت گذاری کنید.

· وقتی نوبت به ویرایش آن commit می رسد، git reset HEAD^ را اجرا کنید. اثر این است که
HEAD با یک بازگردانده می شود و شاخص از همین روند پیروی می کند. با این حال، درخت کار می ماند
همان

· حالا تغییراتی را که می خواهید در commit اول داشته باشید به ایندکس اضافه کنید. تو می توانی
از git add (احتمالاً تعاملی) یا استفاده کنید دستگاه گوارش گي (یا هر دو) برای انجام این کار.

· ایندکس کنونی را با هر پیامی که اکنون مناسب است، متعهد کنید.

· دو مرحله آخر را تکرار کنید تا درخت کار شما تمیز شود.

· Rebase را با git rebase ادامه دهید --continue.

اگر کاملاً مطمئن نیستید که تجدید نظرهای میانی سازگار هستند (آنها
کامپایل، گذراندن مجموعه آزمایشی و غیره) باید استفاده کنید دستگاه گوارش ذخیره کردن پنهان کردن
تغییرات هنوز متعهد نشده پس از هر commit، آزمایش و اصلاح commit در صورت رفع مشکل
لازم است

ریکاوری از UPSTREAM REBASE


بازنویسی (یا هر شکل دیگری از بازنویسی) شاخه‌ای که دیگران بر اساس آن کار کرده‌اند، بد است
ایده: هر کسی پایین دست آن مجبور است تاریخچه خود را به صورت دستی اصلاح کند. این بخش
نحوه انجام تعمیر را از نقطه نظر پایین دست توضیح می دهد. با این حال، راه حل واقعی،
در وهله اول از تغییر پایه بالادستی جلوگیری می شود.

برای نشان دادن، فرض کنید در موقعیتی هستید که فردی دچار یک مشکل می شود زیر سیستم شاخه،
و شما در حال کار بر روی یک موضوع که به این بستگی دارد زیر سیستم. ممکن است در نهایت با
تاریخچه ای مانند زیر:

o----------------------------------------استاد
\
o---o---o---o---o زیر سیستم
\
*---*---* موضوع

If زیر سیستم در برابر استاد، موارد زیر رخ می دهد:

o-------------------------------استاد
\\
o---o---o---o---o o'--o'--o'--o'---o' زیر سیستم
\
*---*---* موضوع

اگر اکنون توسعه را طبق معمول ادامه دهید و در نهایت ادغام شوید موضوع به زیر سیستماز
متعهد می شود از زیر سیستم برای همیشه تکراری خواهد ماند:

o-------------------------------استاد
\\
o---o---o---o---o o'--o'--o'--o'--o'-- زیرسیستم M
\ /
*---*---*-..........-*--* موضوع

چنین موارد تکراری عموماً مورد بی مهری قرار می گیرند زیرا تاریخ را به هم می ریزند و آن را می سازند
دنبال کردن سخت تر برای تمیز کردن چیزها، باید کامیت ها را پیوند بزنید موضوع به
جدید زیر سیستم نوک، به عنوان مثال، rebase موضوع. این به یک اثر موج دار تبدیل می شود: هر کسی در پایین دست
از جانب موضوع مجبور به تغییر پایه نیز می شود و غیره!

دو نوع اصلاح وجود دارد که در بخش های فرعی زیر مورد بحث قرار می گیرد:

مورد آسان: تغییرات به معنای واقعی کلمه یکسان است.
این اتفاق می افتد اگر زیر سیستم rebase یک rebase ساده بود و هیچ تضادی نداشت.

مورد سخت: تغییرات یکسان نیستند.
این اتفاق می افتد اگر زیر سیستم rebase دارای تضادهایی بود، یا از --interactive برای حذف استفاده کرد،
commit های ویرایش، اسکواش یا تعمیر. یا اگر بالادست از یکی از commit استفاده کرد -- اصلاح، تنظیم مجدد،
یا فیلتر شاخه

La ساده مورد
فقط در صورتی کار می کند که تغییرات (شناسه های پچ بر اساس محتویات تفاوت) روشن باشد زیر سیستم هستند
به معنای واقعی کلمه قبل و بعد از rebase یکسان است زیر سیستم انجام داد.

در این صورت، تعمیر آسان است زیرا دستگاه گوارش تخفیف می‌داند که از تغییراتی که قبلاً انجام شده‌اند بگذرد
موجود در بالادست جدید بنابراین اگر بگویید (با فرض اینکه در حال هستید موضوع)

زیر سیستم git rebase $

در نهایت به تاریخچه ثابتی خواهید رسید

o-------------------------------استاد
\
o'--o'--o'--o'--o' زیر سیستم
\
*---*---* موضوع

La سخت مورد
همه چیز پیچیده تر می شود اگر زیر سیستم تغییرات دقیقاً با آنها مطابقت ندارد
قبل از rebase

توجه داشته باشید:
در حالی که گاهی اوقات به نظر می رسد "بازیابی آسان پرونده" حتی در شرایط سخت نیز موفقیت آمیز باشد
ممکن است عواقب ناخواسته ای داشته باشد. به عنوان مثال، یک commit که از طریق حذف شد
git rebase --interactive خواهد بود قیام کرد!

ایده این است که به صورت دستی بگویید دستگاه گوارش تخفیف "جایی که قدیمی زیر سیستم به پایان رسید و شما موضوع
آغاز شد، یعنی همان چیزی که پایه ادغام قدیمی بین آنها بود. شما باید راهی برای آن پیدا کنید
آخرین کامیت قدیمی را نام ببرید زیر سیستم، مثلا:

· با زیر سیستم reflog: پس از دستگاه گوارش رفتن و آوردن، نوک قدیمی از زیر سیستم در است
زیرسیستم@{1}. واکشی های بعدی باعث افزایش تعداد می شود. (دیدن git-reflog(1).)

· نسبت به نوک موضوع: دانستن اینکه شما موضوع دارای سه commit، نکته قدیمی است
of زیر سیستم باید موضوع ~ 3 باشد.

سپس می توانید زیرسیستم..موضوع قدیمی را با گفتن (برای reflog) به نوک جدید پیوند دهید
مورد، و با فرض اینکه شما فعال هستید موضوع قبلا، پیش از این):

$ git rebase --onto subsystem subsystem@{1}

اثر موج دار بازیابی "مورد سخت" به ویژه بد است: هر کس پایین دست از
موضوع اکنون باید یک ریکاوری "مورد سخت" را نیز انجام دهد!

با استفاده از خدمات onworks.net از git-rebase آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

  • 1
    مدیر PAC
    مدیر PAC
    PAC یک جایگزین Perl/GTK است
    SecureCRT/Putty/و غیره (لینوکس
    ssh/telnet/... gui)... یک رابط کاربری گرافیکی فراهم می کند
    برای پیکربندی اتصالات: کاربران،
    رمزهای عبور، انتظار قانونی...
    PAC Manager را دانلود کنید
  • 2
    GeoServer
    GeoServer
    GeoServer یک نرم افزار متن باز است
    سرور نوشته شده در جاوا که به کاربران اجازه می دهد
    برای اشتراک گذاری و ویرایش داده های مکانی
    طراحی شده برای قابلیت همکاری، آن است
    منتشر می کند ...
    GeoServer را دانلود کنید
  • 3
    کرم شب تاب III
    کرم شب تاب III
    مالی شخصی رایگان و منبع باز
    مدیر. ویژگی های Firefly III a
    سیستم حسابداری دوبار ورود تو می توانی
    به سرعت وارد شوید و خود را سازماندهی کنید
    معاملات من ...
    دانلود Firefly III
  • 4
    برنامه های افزودنی OpenOffice Apache
    برنامه های افزودنی OpenOffice Apache
    کاتالوگ رسمی آپاچی
    پسوندهای اپن آفیس پیدا خواهید کرد
    پسوندها از فرهنگ لغت تا
    ابزارهایی برای وارد کردن فایل های PDF و اتصال
    با ext...
    برنامه های افزودنی آپاچی اوپن آفیس را دانلود کنید
  • 5
    MantisBT
    MantisBT
    مانتیس یک وب است که به راحتی قابل استقرار است
    ردیاب مبتنی بر اشکال برای کمک به اشکال محصول
    ردیابی به PHP، MySQL و a نیاز دارد
    وب سرور نسخه ی نمایشی و میزبانی ما را بررسی کنید
    ارائه ...
    MantisBT را دانلود کنید
  • 6
    مسنجر LAN
    مسنجر LAN
    LAN Messenger یک برنامه چت p2p است
    برای ارتباط اینترانت و نمی کند
    نیاز به سرور انواع دستی
    ویژگی ها از جمله پشتیبانی می شوند
    اطلاع رسانی ...
    LAN Messenger را دانلود کنید
  • بیشتر "

دستورات لینوکس

Ad