uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 420
# ืœืžื” ื›ืœ ื›ืš ืžืกื•ื‘ืš? ืืจื‘ืข ืกื™ื‘ื•ืช ืžืจื›ื–ื™ื•ืช ื‘ื’ืœืœืŸ ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืงื•ื“ ืžืกื•ื‘ืš: 1. ืื ื—ื ื• ืขื“ื™ื™ืŸ ืœื ืžืกืคื™ืง ืžื›ื™ืจื™ื ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืื• ื”ื‘ืขื™ื” ื›ื“ื™ ืœื›ืชื•ื‘ ืคื™ืชืจื•ืŸ ืืœื’ื ื˜ื™. 2. ืื ื—ื ื• ืขื“ื™ื™ืŸ ืœื ืžื‘ื™ื ื™ื ืžืกืคื™ืง ืืช ื”ื‘ืขื™ื” ื›ื“ื™ ืœื”ืชืžืงื“ ื‘ Use Cases ื”ืืžื™ืชื™ื™ื ืฉืœื”, ื•ืžืชืขืงืฉื™ื ืขืœ ืžื™ืžื•ืฉ ืฉื™ืชืžื•ื“ื“ ืขื ืžืงืจื™ ืงืฆื” ืฉืืฃ ืคืขื ืœื ื™ืงืจื•. 3. ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืขื“ื™ื™ืŸ ืœื ืžืกืคื™ืง ื˜ื•ื‘ื” ื›ื“ื™ ืฉื ื•ื›ืœ ืœื›ืชื•ื‘ ืคื™ืชืจื•ืŸ ืืœื’ื ื˜ื™. 4. ื”ื‘ืขื™ื” ื‘ืืžืช ืžืกื•ื‘ื›ืช ื•ื“ื•ืจืฉืช ื˜ื™ืคื•ืœ ื‘ืื™ื ืกื•ืฃ ืžืงืจื™ ืงืฆื”. ื›ืฉืืชื ื—ื•ื–ืจื™ื ืœืงื•ื“ ืื—ืจื™ ื—ืฆื™ ืฉื ื” ืื• ืฉื ื” ืืชื ืžืงื‘ืœื™ื ื”ื–ื“ืžื ื•ืช ืœืชืงืŸ ืงื•ื“ ืžืกื•ื‘ืš ืฉื ื›ืชื‘ ื‘ื’ืœืœ ืฉืœื•ืฉืช ื”ืกื™ื‘ื•ืช ื”ืจืืฉื•ื ื•ืช. ืื– ื›ืŸ ืื ื™ ืžื›ื™ืจ ืืช ื’ื™ืฉืช ื” "ืขื•ื‘ื“ ืืœ ืชื™ื’ืข" ืฉื”ืจื‘ื” ืื ืฉื™ื ืžื™ื™ืฉืžื™ื ื›ืœืคื™ ืงื•ื“ ืžืกื•ื‘ืš, ืื‘ืœ ืœื ืžืกื›ื™ื ืื™ืชื”. ืฉืœื•ืฉ ืžืชื•ืš ืืจื‘ืข ืกื™ื‘ื•ืช ืœืกื™ื‘ื•ืš ื›ื ืจืื” ื›ื‘ืจ ืœื ืจืœื•ื•ื ื˜ื™ื•ืช ื‘ืงื•ื“ ืฉื ื›ืชื‘ ืœืคื ื™ ืฉื ื”. ื”ื™ื•ื ื™ื›ื•ืœ ืœื”ื™ื•ืช ื”ื–ื“ืžื ื•ืช ื˜ื•ื‘ื” ืœืคืฉื˜ ืื•ืชื•.

ToCode
1 420
# ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื“ื•ื’ืžื” ื˜ื•ื‘ื” ืœืฉื™ืžื•ืฉ ื‘ Function Overloading ืคื™ืฆ'ืจ Function Overloading ืฉืœ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื™ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืžืฉ ืžื•ืฆืœื— - ื”ื•ื ื”ื™ื” ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ืœืคื™ ื”ื˜ื™ืคื•ืกื™ื ืฉืœ ื”ืคืจืžื˜ืจื™ื ื‘ื–ืžืŸ ืงื•ืžืคื™ืœืฆื™ื” ืœืื™ื–ื• ื’ื™ืจืกื” ืฉืœ ืคื•ื ืงืฆื™ื” ื”ืชื›ื•ื•ื ื• ื•ืœื”ืคืขื™ืœ ืื•ืชื”, ื‘ืžืงื•ื ืœื”ื›ืจื™ื— ืื•ืชื ื• ืœื›ืชื•ื‘ ื’ื™ืจืกื” ื›ืœืœื™ืช ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื‘ืกื’ื ื•ืŸ JavaScript. ืื‘ืœ ืœืžืจื•ืช ื”ืžื™ืžื•ืฉ ื”ืงืฆืช ืœื•ืงื” ื‘ื—ืกืจ ืฉืœื•, ื”ื•ื ืขื“ื™ื™ืŸ ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ื‘ื—ื™ื™ื ื”ืืžื™ืชื™ื™ื ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื•ืช ืขื–ืจ ืฉื™ื”ื™ื” ื›ื™ืฃ ืœื”ืคืขื™ืœ. ืื ืจืง ื ืงืคื™ื“ ืœืขื‘ื•ื“ ื ื›ื•ืŸ. ## ืžื” ืื ื—ื ื• ื‘ื•ื ื™ื ืื ื™ ืจื•ืฆื” ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ื‘ืฉื css ืฉืžืงื‘ืœืช ืืœืžื ื˜ DOM ื‘ืชื•ืจ ืคืจืžื˜ืจ ืจืืฉื•ืŸ, ื•ืขื›ืฉื™ื• ื™ืฉ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช: 1. ื”ืคืจืžื˜ืจ ื”ืฉื ื™ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืืคื™ื™ืŸ CSS, ื•ืื– ื”ืคืจืžื˜ืจ ื”ืฉืœื™ืฉื™ ื™ื”ื™ื” ื”ืขืจืš ืฉืœ ืื•ืชื• ืžืืคื™ื™ืŸ. 2. ื”ืคืจืžื˜ืจ ื”ืฉื ื™ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืื•ื‘ื™ืงื˜, ืฉื”ืžืคืชื—ื•ืช ื‘ื• ื™ื”ื™ื• ืžืืคื™ื™ื ื™ CSS ื•ื”ืขืจื›ื™ื ื™ื”ื™ื• ื”ืขืจื›ื™ื ืฉืžืชืื™ืžื™ื ืœื”ื. ืœื“ื•ื’ืžื” ืื•ื›ืœ ืœื”ืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ื‘ืฆื•ืจื•ืช ื”ื‘ืื•ืช ืฉื™ืชืงืžืคืœื•:
const el = document.querySelector('h1')!;

css(el, 'fontSize', '16px');
css(el, { background: 'red', padding: '10px' });
ืื‘ืœ ื”ืคืขืœื•ืช ื›ืืœื” ืœื ื™ืชืงืžืคืœื•:
// foo is not a valid CSS attribute name
css(el, 'foo', 'bar');

// 17 is not a valid value for 'background'
css(el, 'background', 17);

// no need for the third parameter
css(el, { background: 'red' }, 'red')
## ืžื™ืžื•ืฉ ื”ืคื•ื ืงืฆื™ื” ื‘ื’ืœืœ ืฉ css ืฆืจื™ื›ื” ืœืชืžื•ืš ื‘ืฉืชื™ ื—ืชื™ืžื•ืช, ืื ื™ ืžืขื“ื™ืฃ ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื™ืช ืขื–ืจ (ืื• ืคื•ื ืงืฆื™ื•ืช ืขื–ืจ ืื ื™ืฉ ืฆื•ืจืš) ืฉื™ืžืžืฉื• ื›ืœ ื—ืชื™ืžื” ื‘ื ืคืจื“. ื‘ืžืงืจื” ืฉืœื ื• ืคื•ื ืงืฆื™ื™ืช ืขื–ืจ ืื—ืช ืชืกืคื™ืง, ื›ื™ ืžืื•ื“ ืงืœ ืœืจืื•ืช ืื™ืš ืœืชืจื’ื ืืช ื”ืคืžื˜ืจื™ื ืžื”ื—ืชื™ืžื” ืฉืœ ืžืืคื™ื™ืŸ ื™ื—ื™ื“ ืœื—ืชื™ืžืช ื”ืื•ื‘ื™ืงื˜. ืœื›ืŸ ืื ื™ ืžืชื—ื™ืœ ื‘ื›ืชื™ื‘ืช ื”ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืืœืžื ื˜ ื•ืื•ื‘ื™ืงื˜ |CSS ื•ืžืขื“ื›ื ืช ืืช ื›ืœ ื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘:
function cssSetAttributes(el: HTMLElement, css: Partial<CSSStyleDeclaration>) {
  Object.assign(el.style, css);
}
ืขื›ืฉื™ื• ืื ื—ื ื• ืžื•ื›ื ื™ื ืœื‘ื ื•ืช ืืช ืคื•ื ืงืฆื™ื™ืช ื” Dispatch - ื”ืคื•ื ืงืฆื™ื” ืฉืžืจื›ื–ืช ืืช ื›ืœ ื”ื—ืชื™ืžื•ืช ื•ืฆืจื™ื›ื” ืœื”ืคืขื™ืœ ืืช ื”ืžื™ืžื•ืฉ ื”ืžืชืื™ื. ื‘ื’ืœืœ ืฉืื ื—ื ื• ืœื ื™ื•ื“ืขื™ื ื“ืจืš ืื™ื–ื• ื—ืชื™ืžื” ื”ื’ืขื ื•, ื”ืคืจืžื˜ืจื™ื ืฉืœ ืคื•ื ืงืฆื™ื” ื–ื• ื™ื›ื•ืœื™ื ืœืงื‘ืœ ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ืขืจื›ื™ื ื•ืœื›ืŸ ื‘ื“ืจืš ื›ืœืœ ื™ื”ื™ื” ืงืฉื” ื•ืœื ืžื•ืขื™ืœ ืœื›ืชื•ื‘ ืœื” ื”ื’ื“ืจื•ืช ื˜ื™ืคื•ืกื™ื ื˜ื•ื‘ื•ืช. ื‘ืขืฆื ื”ืžืฉื™ืžื” ื”ื™ื—ื™ื“ื” ืฉืœื™ ื‘ืคื•ื ืงืฆื™ื” css ื”ื™ื ืœื–ื”ื•ืช ืžืื™ื–ื• ื—ืชื™ืžื” ื”ื’ืขืชื™ ื•ืœื”ืคืขื™ืœ ืืช cssSetAttributes ืขื ื”ืคืจืžื˜ืจื™ื ืฉืžืชืื™ืžื™ื ืœืื•ืชื” ื—ืชื™ืžื”. ื–ื” ื ืจืื” ื›ื›ื”:
function css<T extends keyof CSSStyleDeclaration>(el: HTMLElement, attr: T, value: CSSStyleDeclaration[T]): void;
function css(el: HTMLElement, css: Partial<CSSStyleDeclaration>): void;
function css(el: HTMLElement, cssOrAttr: any, value?: any) {
  if (value) {
    cssSetAttributes(el, { [cssOrAttr]: value });
  } else {
    cssSetAttributes(el, cssOrAttr);
  }
}
ื—ืœื•ืงืช ืชืคืงื™ื“ื™ื ื‘ืจื•ืจื” ื‘ื™ืŸ ืคื•ื ืงืฆื™ื™ืช ื” dispatch (ื–ืืช ืฉื›ืœ ื”ื—ืชื™ืžื•ืช ืžืชื ืงื–ื•ืช ืืœื™ื”, ื•ื”ื™ื ืฆืจื™ื›ื” ืœื”ื—ืœื™ื˜ ืžื” ืœืขืฉื•ืช) ืœื‘ื™ืŸ ื”ืžื™ืžื•ืฉ ืื• ื”ืžื™ืžื•ืฉื™ื ื”ืฉื•ื ื™ื, ื”ื™ื ื”ืžืคืชื— ืœื›ืชื™ื‘ืช Function Overloading ื™ืขื™ืœ ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜. ืžื•ื–ืžื ื™ื ืœืจืื•ืช ืืช ื”ืงื•ื“ ื”ืžืœื ื‘ืคืขื•ืœื” ื•ืœืฉื—ืง ืื™ืชื• ื‘ืงื•ื“ืคืŸ ื‘ืงื™ืฉื•ืจ: https://codepen.io/ynonp/pen/zYLONxe?editors=1010 ืื• ืžืžืฉ ื›ืืŸ ืžื•ื˜ืžืข: <iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/zYLONxe?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/ynonp/pen/zYLONxe"> Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>) on <a href="https://codepen.io">CodePen</a>. </iframe>

ToCode
1 420
# ื”ื™ื•ื ืœืžื“ืชื™: ื”ืคืงื•ื“ื” readarray ื‘ bash ืœ bash ื™ืฉ ืืช ื”ืคืงื•ื“ื” read ืฉืืžื•ืจื” ืœืงืจื•ื ืงืœื˜ ืœืžืฉืชื ื”, ื•ืœื“ืขืชื™ ื”ื™ื ื”ืกื™ื‘ื” ื”ืžืจื›ื–ื™ืช ืฉืื ืฉื™ื ืœื ืื•ื”ื‘ื™ื bash. ื”ื™ื ืชืขื‘ื•ื“ ื˜ื•ื‘ ื›ืฉื ื™ืงื— ืžื™ืœื” ื‘ื•ื“ื“ืช ืœืžืฉืชื ื”:
ubuntu@primary:~$ read name < <(echo ynon)
ubuntu@primary:~$ echo "$name"
ynon
ืื‘ืœ ืจืง ืชื ืกื• ืœื”ืขื‘ื™ืจ ืžืฉื”ื• ืฉื”ื™ื ืœื ืื•ื”ื‘ืช ื•ืื™ื‘ื“ืชื ืื•ืชื”. ื”ื ื” ืœื“ื•ื’ืžื” read ืžื•ื—ืงืช ืืช ื”ืจื•ื•ื—ื™ื ืžืชื—ื™ืœืช ื”ืฉื•ืจื”, ืกืชื ื›ื™ ืžืชื—ืฉืง ืœื”:
ubuntu@primary:~$ read name < <(echo "   one")
ubuntu@primary:~$ echo "$name"
one
ื•ืื ื‘ืคืœื˜ ื™ืฉ ื›ืžื” ืฉื•ืจื•ืช, read ืคืฉื•ื˜ ืชื–ืจื•ืง ืืช ื›ืœ ืžื” ืฉื‘ื ืื—ืจื™ ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”:
ubuntu@primary:~$ read name < <(cowsay hello)
ubuntu@primary:~$ echo "$name"
_______
ื•ื ื›ื•ืŸ ื”ื›ืœ ืืคืฉืจ ืœืคืชื•ืจ, ืื‘ืœ ื›ืฉื”ื›ืœื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื’ื ื”ื—ื™ื™ื ืคืฉื•ื˜ื™ื ื™ื•ืชืจ. ื”ืคืงื•ื“ื” readarray ื”ื™ื ื’ื™ืจืกื” ืžืฉื•ื“ืจื’ืช ืฉืœ read ืฉื ื•ืขื“ื” ืœืงืจื•ื ืื•ืกืฃ ืฉืœ ืฉื•ืจื•ืช ืœืชื•ืš ืžืขืจืš, ื•ื’ื ืœื˜ืคืœ ื˜ื•ื‘ ื™ื•ืชืจ ื‘ื›ืœ ืกื•ื’ื™ ื”ืงืœื˜. ื›ืš ืชื™ืจืื” ื”ื“ื•ื’ืžื” ื”ืฉื ื™ื” ืขื ื”ืจื•ื•ื— ื‘ื”ืชื—ืœื” ืขื readarray:
ubuntu@primary:~$ readarray lines < <(echo "   one")
ubuntu@primary:~$ echo "$lines"
   one
ื•ื–ืืช ื”ื“ื•ื’ืžื” ื”ืฉืœื™ืฉื™ืช, ืฉืžื“ืคื™ืกื” ื”ืคืขื ืืช ื›ืœ ื”ืฉื•ืจื•ืช:
ubuntu@primary:~$ readarray lines < <(cowsay hello)
ubuntu@primary:~$ echo "${lines[@]}"
 _______
 < hello >
  -------
         \   ^__^
          \  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||

ื™ื•ืชืจ ืžื–ื”, ื‘ื’ืœืœ ืฉื”ืคืœื˜ ื ืฉืžืจ ื‘ืชื•ืจ ืžืขืจืš ืืคืฉืจ ืœื’ืฉืช ืœื›ืœ ืฉื•ืจื” ืžืžื ื• ืœืžืฉืœ:
echo "${lines[1]}"
ืœ readarray ื™ืฉ ื“ื™ ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช ืœื”ืชืืžื” ื›ื•ืœืœ ื”ืžืชื’ -t ืฉืžื•ื—ืง ืืช ืชื• ื™ืจื™ื“ืช ื”ืฉื•ืจื” ืžื›ืœ ืฉื•ืจืช ืงืœื˜, ื”ืžืชื’ -n ืฉืžืืคืฉืจ ืœื”ื’ื‘ื™ืœ ืืช ืžืกืคืจ ื”ืฉื•ืจื•ืช ืฉื ืงืจื, ื”ืžืชื’ -s ืฉืžืืคืฉืจ ืœื“ืœื’ ืขืœ ื”ืฉื•ืจื•ืช ื”ืจืืฉื•ื ื•ืช. ื .ื‘. ื‘ื˜ื•ื— ืฉืžืชื ืœื‘ ืœืงืจื™ืื” ื”ืžืฉื•ื ื” ืขื ื›ืœ ื”ื—ืฆื™ื ืฉืžืืœื”. ื’ื ืื ื™ ื›ืžื•ื›ื ื”ื™ื™ืชื™ ืฉืžื— ืœื›ืชื•ื‘:
ubuntu@primary:~$ cowsay hello | readarray lines
ืื‘ืœ ื–ื” ืœื ื™ืขื‘ื•ื“. ืกื™ืžืŸ | ืคื•ืชื— Sub Shell, ื•ื”ืžืขืจืš lines ื™ื•ื’ื“ืจ ื‘ืื•ืชื• Shell ืคื ื™ืžื™. ืื ื ืคืขื™ืœ ืคืงื•ื“ื” ื›ื–ืืช ื•ืื—ืจื™ื” ื ื ืกื” ืœื”ื“ืคื™ืก ืืช lines ื‘ Shell ืฉืœื ื• ื ืงื‘ืœ ืžืขืจืš ืจื™ืง.

ToCode
1 420
# ืจื™ืืงื˜ ืืคืงื˜ ืœื—ื™ืฉื•ื‘ ืืกื™ื ื›ืจื•ื ื™ ื”ื•ื Anti Pattern ืื ืงื•ืžืคื•ื ื ื˜ืช ืจื™ืืงื˜ ืžืงื‘ืœืช ืขืจืš ื‘ prop ื•ืฆืจื™ื›ื” ืœื”ืฆื™ื’ ืžื™ื“ืข ืžื—ื•ืฉื‘ ืžื”ืขืจืš ื”ื–ื”, ื›ื•ืœื ื• ื™ื•ื“ืขื™ื ืœื ืœืฉืžื•ืจ ืืช ืชื•ืฆืืช ื”ื—ื™ืฉื•ื‘ ื‘ State ื ืคืจื“ ื•ืคืฉื•ื˜ ืœื—ืฉื‘ ืื•ืชื• ื›ืœ Render, ืœื“ื•ื’ืžื”:
function Twice({ x }) {
    return <p>{x} * 2 = {x * 2}</p>
}
ืื‘ืœ ื›ืฉืžื“ื•ื‘ืจ ื‘ื—ื™ืฉื•ื‘ ืืกื™ื ื›ืจื•ื ื™ ืื ื—ื ื• ื ื•ื˜ื™ื ืœื”ืชื‘ืœื‘ืœ - ื ื–ื›ืจื™ื ืฉื™ืฉ useEffect, ื—ื•ืฉื‘ื™ื ืฉื›ื“ืื™ ืœื—ืฉื‘ ืืช ื”ืขืจืš ื‘ืื™ื–ื” ืืคืงื˜, ืœืฉืžื•ืจ ืื•ืชื• ื‘ืกื˜ื™ื™ื˜ ื ืคืจื“ ื•ืื– ืœืจื ื“ืจ ืžื—ื“ืฉ ื›ืฉื™ื”ื™ื” ืžื•ื›ืŸ. ืžืฉื”ื• ื›ื–ื”:
// Don't Do This:
function DataFromApi({ id }) {
    const [name, setName] = useState(null);
    
    useEffect(() => {
        fetch(`/api/product/${id}`)
            .then(p => p.json())
            .then(p => setName(p.name));
    }, [id]);
    
    if (!name) {
        return <p>Loading...</p>
    }
    
    return <p>Product Name = {name}</p>
}
ืื‘ืœ ื–ืืช Anti Pattern. ืืœื” ื”ื‘ืขื™ื•ืช ื”ืžืจื›ื–ื™ื•ืช ืขื ื”ื’ื™ืฉื”: 1. ืื ื”ืงื•ืžืคื•ื ื ื˜ื” ื™ื•ืฆืืช ืžื”ืžืกืš ื•ื—ื•ื–ืจืช, ื”ืขืจืš ืฉืœื›ื ื ืžื—ืง ื•ืฆืจื™ืš ืœื”ื‘ื™ื ืื•ืชื• ืžื—ื“ืฉ. ื”ืกื˜ื™ื™ื˜ ื”ื•ื ืœื ืžืงื•ื ืžืกืคื™ืง "ื™ืฆื™ื‘" ื›ื“ื™ ืœืฉืžื•ืจ ื‘ื• ืžื™ื“ืข ืฉืžื’ื™ืข ืžื”ืจืฉืช (ืื• ืžื™ื“ืข ืฉื”ืชืืžืฆืชื ืœื—ืฉื‘ ื‘ืื•ืคืŸ ื›ืœืœื™). 2. ื™ืฉ ืœื ื• ื ื˜ื™ื” ืœื˜ืขื•ืช ื‘ืžืขืจืš ื” Dependencies ืฉืœ useEffect ืœืขืชื™ื ื”ืจื‘ื” ื™ื•ืชืจ ืงืจื•ื‘ื•ืช ืžืžื” ืฉื ื“ืžื” ืœื›ื, ื•ื˜ืขื•ื™ื•ืช ื›ืืœื” ืžืื•ื“ ืงืฉื•ืช ืœื–ื™ื”ื•ื™. ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื”ื—ื™ืฉื•ื‘ ืฉืœื›ื ื™ืจื•ืฅ ื”ืจื‘ื” ื™ื•ืชืจ ืคืขืžื™ื ืžืžื” ืฉืืชื ื‘ืืžืช ืฆืจื™ื›ื™ื. ื›ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื—ืฉื‘ ืžื™ื“ืข ื‘ืฆื•ืจื” ืืกื™ื ื›ืจื•ื ื™ืช ื•ืœื”ืฉืชืžืฉ ื‘ืชื•ืฆืื” ื‘ืงื•ืžืคื•ื ื ื˜ื”, ื”ืจื‘ื” ื™ื•ืชืจ ืžื•ืžืœืฅ ืœื”ืคืจื™ื“ ื‘ื™ืŸ "ืื ื™ ืจื•ืฆื” ืœื—ืฉื‘ ืืช ื”ืžื™ื“ืข ื”ื–ื”" ืœื‘ื™ืŸ "ืื ื™ ืฆืจื™ืš ืœื”ื•ืฆื™ื ืืช ื”ืžื™ื“ืข ืฉื—ื•ืฉื‘ ืžื”ืžื—ืกืŸ ื›ื“ื™ ืœื”ืฆื™ื’ ืื•ืชื•". ื”ืงื•ืžืคื•ื ื ื˜ื” ืื—ืจืื™ืช ืจืง ืขืœ ื”ื—ืœืง ื”ืฉื ื™, ืื‘ืœ ืืช ื”ืชื—ืœืช ื”ื—ื™ืฉื•ื‘ ื•ืฉืžื™ืจืช ื”ืชื•ืฆืื•ืช ื›ื“ืื™ ืœื‘ืฆืข ืžื—ื•ืฅ ืœืขืฅ. ืจื™ื“ืืงืก ืžืกืคืง ืคื™ืชืจื•ืŸ ื˜ื•ื‘ ื‘ืื•ืคืŸ ื›ืœืœื™, ื•ื›ืฉืžื“ื•ื‘ืจ ื‘ืชืงืฉื•ืจืช ืกืคืจื™ื•ืช ื›ืžื• swr ืื• react-query ืžืฆื™ืขื•ืช ืคื™ืชืจื•ืŸ ื˜ื•ื‘ ืชื•ืš ืฉื™ืžื•ืฉ ื‘ Context.

ToCode
1 420
# ืžืฉื—ืงื™ื ืขื ื˜ื™ื™ืคืกืงืจื™ืคื˜ - ื™ืฆื™ืจืช ื˜ื™ืคื•ืก ืœืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ืžืขืจืš ื ื™ืงื— ืžืขืจืš ืฉืœ ืคืจื™ื˜ื™ื ืงื‘ื•ืขื™ื, ืœืžืฉืœ ืžืขืจืš ืฉืœ ืฆื‘ืขื™ื:
const colors = ['red', 'blue', 'green', 'white'];
ื•ืขื›ืฉื™ื• ื ืจืฆื” ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืื™ื ื“ืงืก ืฉืœ ืฆื‘ืข ืžืชื•ืš ื”ืžืขืจืš ื•ืžื—ื–ื™ืจื” ืืช ืฉื ื”ืฆื‘ืข. ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ ืขืฉื•ื™ ืœื”ื™ื•ืช:
function getColorName(index: number) {
    return colors[index];
}
ื•ื–ื” ืขื•ื‘ื“ ื›ืžื•ื‘ืŸ ืื‘ืœ ืื ื—ื ื• ืœื ื ื”ื ื™ื ืžื‘ื“ื™ืงืช ื”ื˜ื™ืคื•ืกื™ื - ืื ื™ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ืขืœ ืื™ื ื“ืงืกื™ื ื—ื•ืงื™ื™ื ืื• ืœื ื—ื•ืงื™ื™ื ื•ื”ื›ืœ ื™ืขื‘ื•ื“:
// compiles OK
getColorName(1);

// also compiles OK - but 129 is not a valid index
getColorName(129);
ืื ืืชื ืื ืฉื™ื ืฉืื•ื”ื‘ื™ื ืœื›ืชื•ื‘ ื›ืคื•ืœ ืชื•ื›ืœื• ืœืชืงืŸ ืืช ื”ืคื•ื ืงืฆื™ื” ื‘ืขื–ืจืช ืื™ื—ื•ื“ ื˜ื™ืคื•ืกื™ื ืœื™ื˜ืจืœื™ื™ื:
function getColorName(index: 0|1|2|3) {
    return colors[index];
}
ืื‘ืœ ื–ืืช ื‘ืขื™ื” ื›ื™ ืขื›ืฉื™ื• ื›ืœ ืคืขื ืฉื ืขื“ื›ืŸ ืืช ื”ืžืขืจืš ื ืฆื˜ืจืš ืœืขื“ื›ืŸ ื’ื ืืช ื”ืคื•ื ืงืฆื™ื”. ื‘ืจื•ืจ ืฉืืคืฉืจ ืœื”ื•ืฆื™ื ืืช ื”ื’ื“ืจืช ื”ื˜ื™ืคื•ืก ืžื”ืคื•ื ืงืฆื™ื” ืœ Type Alias, ืื‘ืœ ืขื“ื™ื™ืŸ ื ืฆื˜ืจืš ืœืชื—ื–ืง ืื•ืชื• ื‘ื ืคืจื“ ืžื”ืžืขืจืš. ื›ื™ื•ื•ืŸ ื™ื•ืชืจ ืžืืชื’ืจ ืฉื—ื•ืกืš ืืช ื”ืงื•ื“ ื”ื›ืคื•ืœ ื™ื”ื™ื” ืœื™ื™ืฆืจ ื“ื™ื ืžื™ืช ืืช ืื•ืชื• ืื™ื—ื•ื“. ื›ืœื™ ืขื‘ื•ื“ื” ืจืืฉื•ืŸ ืฉื ืฆื˜ืจืš ื”ื•ื ื” Utility Type ื”ื‘ื ืฉื”ื•ืคืš ื˜ื™ืคื•ืก ืžื—ืจื•ื–ืชื™ ืฉืžื™ื™ืฆื’ ืžืกืคืจ ืœืžืกืคืจ ืขืฆืžื•, ื›ืœื•ืžืจ ื”ื•ืคืš ืืช ื”ื˜ื™ืคื•ืก '2' ืœื˜ื™ืคื•ืก 2:
type StringToNumber<T extends string, A extends any[] = []> =
  T extends keyof [0, ...A] ? A['length'] : StringToNumber<T, [0, ...A]>
ื”ืงื•ื“ ืงืฆืช ืžื•ื–ืจ ืื‘ืœ ื‘ื’ื“ื•ืœ ื–ื• ืคื•ื ืงืฆื™ื” ืจืงื•ืจืกื™ื‘ื™ืช ืฉืžื—ืคืฉืช ืืช ื”ืขืจืš ื”ืืžื™ืชื™ ืฉืœ ื”ืžืกืคืจ ื‘ืืžืฆืขื•ืช ื’ื•ื“ืœ ืฉืœ ืžืขืจืš. ื”ื™ื ื›ืœ ืคืขื ืžื ืกื” ืžืขืจืš ืงืฆืช ื™ื•ืชืจ ื’ื“ื•ืœ ื•ื‘ื•ื“ืงืช ืื ื”ืžืกืคืจ T ื”ื•ื ืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ืื•ืชื• ืžืขืจืš, ื•ืจืง ื›ืฉืžืฆืื ื• ืืช ื”ืžืขืจืš ืฉ T ื”ื•ื ืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ื• ืื ื—ื ื• ืขื•ืฆืจื™ื ื•ืžื—ื–ื™ืจื™ื ืืช ื’ื•ื“ืœ ื”ืžืขืจืš. ื•ืžืฉืชืžืฉื™ื ื‘ื” ื›ื“ื™ ืœื™ื™ืฆืจ ื˜ื™ืคื•ืกื™ื ื‘ืื•ืคืŸ ื”ื‘ื:
// Two == 2
type Two = StringToNumber<'2'>;

// Three == 3
type Three = StringToNumber<'3'>;
ื”ืกื™ืคื•ืจ ืจืง ืžืฉืชืคืจ ื›ืฉืื ื™ ืžื ืกื” ืœื”ืคื•ืš ืœืžืกืคืจ ืžืฉื”ื• ืฉื”ื•ื ื‘ื›ืœืœ ืœื ืžืกืคืจ. ื”ืงื•ื“ ื”ื–ื” ืœื ืžืชืงืžืคืœ ื›ื™ ืื™ืŸ ืžืขืจืš ืฉ hello ื”ื•ื ืื™ื ื“ืงืก ื—ื•ืงื™ ื‘ื•:
type Error = StringToNumber<'hello'>;
ืขื ื”ืฉื’ื™ืื” ื”ืžื•ืคืœืื”:
Type instantiation is excessively deep and possibly infinite.(2589)
ื•ื–ื” ืžื”ืžื ื›ื™ ืื ื—ื ื• ื™ื›ื•ืœื™ื "ืœืชืคื•ืก" ืืช ื”ืฉื’ื™ืื” ื•ืœื”ืฉืชืžืฉ ื‘ื” ื›ื“ื™ ืœื–ืจื•ืง ืžืคืชื—ื•ืช ืžื™ื•ืชืจื™ื ื‘ืขื–ืจืช Mapped Types. ื”ืจืขื™ื•ืŸ ื”ื•ื ืœืงื—ืช ืืช ื›ืœ ื”ืžืคืชื—ื•ืช ื‘ items, ืฉื–ื” ื›ืœ ื”ืื™ื ื“ืงืกื™ื (ื‘ืชื•ืจ ืžื—ืจื•ื–ื•ืช) ืื‘ืœ ื’ื ื”ืžืืคื™ื™ืŸ length ื•ื›ืœ ืฉืืจ ื”ืคื•ื ืงืฆื™ื•ืช ืฉืœ ื”ืžืขืจืš, ื•ืœืกื ืŸ ืžื”ื ืจืง ืืช ืืœื” ืฉืืคืฉืจ ืœื”ืžื™ืจ ืœืžืกืคืจ, ื•ืขืœ ื”ื“ืจืš ื’ื ืœื”ืžื™ืจ ืื•ืชื ืœืžืกืคืจื™ื. ื‘ืกื•ืฃ ื ืคืขื™ืœ keyof ืขืœ ื”ืชื•ืฆืื” ื•ื ืงื‘ืœ ืืช ืื™ื—ื•ื“ ื”ืžืกืคืจื™ื ืฉื—ื™ืคืฉื ื•. ื–ื” ื”ืงื•ื“:
type ValidIndex = keyof {
    [i in keyof typeof items as (i extends string ? StringToNumber<i> : never)]: 2;
}
ื”ืขืจืš 2 ื‘ืกื•ืฃ ื”ื•ื ืฉืจื™ืจื•ืชื™ ืœื’ืžืจื™, ื›ื™ keyof ื™ื–ืจื•ืง ืื•ืชื•. ื’ื ื” never ืœื ื—ืฉื•ื‘ ื›ื™ ื”ื•ื ื™ื™ื–ืจืง, ื•ืžื ื’ื ื•ืŸ ื”ืžื™ืคื•ื™ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื™ืฉืžื™ื˜ ืืช ื”ืžืคืชื—ื•ืช ืฉืœื ื”ืฆืœื™ื—ื•. ื”ืชื•ืฆืื”:
// Compiles OK - as 2 is a valid index in the array
const valid: ValidIndex = 2;

// Compilation error - 10 is not a valid index
const invalid: ValidIndex = 10;

ToCode
1 420
# ืจื’ืข, ืœืžื” ื–ื” ืขื•ื‘ื“? ื‘ื›ืœ ื”ืคืจื™ื™ืžื•ื•ืจืงื™ื ื•ืฉืคื•ืช ื”ืชื›ื ื•ืช ืฉื™ืฆื ืœื™ ืœืจืื•ืช, ื”ื™ื” ืคืขืจ ื‘ื™ืŸ ื›ืžื•ืช ื”ืฉืขื•ืช ื”ื ื“ืจืฉืช ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืœืงื•ื“ ืฉืขื•ื‘ื“ ืœื›ืžื•ืช ื”ืฉืขื•ืช ื”ื ื“ืจืฉืช ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืœืžื” ื”ื•ื ืขื•ื‘ื“. ื‘ืจื•ื‘ ื”ืžืงืจื™ื ื’ื ืื—ืจื™ ืฉื—ืฉื‘ืชื™ ืฉืื ื™ ืžื‘ื™ืŸ ืœืžื” ื”ืงื•ื“ ืขื•ื‘ื“, ื”ื™ื” ืฆืจื™ืš ืขื•ื“ ื›ืžื” ืฉืขื•ืช ืฉืœ ืœื™ืžื•ื“ ื•ื”ืฉืงืขื” ื›ื“ื™ ืœื”ื‘ื™ืŸ ืฉื‘ืขืฆื ืœื ื”ื‘ื ืชื™ ื ื›ื•ืŸ ื‘ืคืขื ื”ืจืืฉื•ื ื”, ื•ืœื“ื™ื™ืง ืืช ื”ื”ื‘ื ื”. ืœืคืขืžื™ื ืจืง ื›ืฉื”ื’ืขืชื™ ืœื“ื‘ืจ ืขื ืื ืฉื™ื ืขืœ ื”ืงื•ื“ ืื• ืœื”ืกื‘ื™ืจ ืื•ืชื• ื‘ื›ืชื‘ ืคืชืื•ื ื”ื‘ื ืชื™ ืฉืคืกืคืกืชื™ ื›ืžื” ื ืงื•ื“ื•ืช ื—ืฉื•ื‘ื•ืช. ื•ื–ื” ืžื‘ื™ื ืื•ืชื ื• ืœื›ืžื” ื‘ืขื™ื•ืช- 1. ื‘ืจื•ื‘ ื”ืชืขืฉื™ื” ื™ืฉ ืœื—ืฅ ืœื”ื’ื™ืข ืœืคื™ืฆ'ืจื™ื ืขื•ื‘ื“ื™ื ืžื”ืจ. ืžืฉืคื˜ ื›ืžื• "ื‘ื•ืก ื”ืงื•ื“ ืขื•ื‘ื“ ืคื™ืงืก ื•ืขื›ืฉื™ื• ืื ื™ ื™ื•ืฉื‘ ืœืงืจื•ื ืืช ื›ืœ ื”ืชื™ืขื•ื“ ื›ื“ื™ ืœื”ื‘ื™ืŸ ืœืžื” ื–ื” ืขื•ื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘" ืœื ืžืชืงื‘ืœ ื‘ื”ื‘ื ื”. 2. ื’ื ื”ืžืชื›ื ืชื™ื ืขืฆืžื ืœื ืžืชืœื”ื‘ื™ื ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“ ืขืœ ืงื•ื“ ืฉืขื•ื‘ื“, ื›ื™ ืื ื—ื ื• ืœื ื‘ื˜ื•ื—ื™ื ืžื” ื–ื” ืื•ืžืจ "ืœื”ื‘ื™ืŸ ืืช ื”ืงื•ื“ ืขื“ ื”ืกื•ืฃ". ืจื•ื‘ ื”ื–ืžืŸ ืื—ืจื™ ืฉืงื•ื“ ืขื•ื‘ื“ ืื ื—ื ื• ืžืจื’ื™ืฉื™ื ืฉืื ื—ื ื• ืžื‘ื™ื ื™ื ืื•ืชื• ื“ื™ ื˜ื•ื‘. 3. ืœืื•ืจืš ื–ืžืŸ, ืงื•ื“ ืฉืื ื—ื ื• ืœื ืžื‘ื™ื ื™ื ืžื™ื™ืฆืจ ืชื•ืคืขื•ืช ืœื•ื•ืื™ ื•ื‘ืื’ื™ื ืฉื™ื”ื™ื” ืœื ื• ืงืฉื” ืœืžืฆื•ื. ื”ืžื—ืฉื‘ ืœื ืžืชืขืœื ืžื›ืœื•ื, ืืคื™ืœื• ืžื”ื ืงื•ื“ื•ืช ืฉืื ื—ื ื• ืœื ืจืื™ื ื•. ื”ืคื™ืชืจื•ืŸ? ืœื“ืขืชื™ ื”ืคื™ืชืจื•ืŸ ื”ื™ื—ื™ื“ ื”ื•ื ืœืฉื‘ื•ืจ ื“ื‘ืจื™ื ืื—ืจื™ ืฉื›ืชื‘ืชื ืื•ืชื, ื•ืœื ืœื“ื•ื•ื— ืขืœ ืคื™ืฆ'ืจ ืžื•ื›ืŸ ืขื“ ืฉืกื™ื™ืžืชื ืœื›ืชื•ื‘ ืขื‘ื•ืจื• ื‘ื“ื™ืงื•ืช ื•ืœื—ืงื•ืจ ืืช ื›ืœ ื”ื”ืฉืœื›ื•ืช ืฉืœ ืื•ืชื• ืงื•ื“. ื”ื›ื™ ื—ืฉื•ื‘ ืœื ืœื”ืฉืื™ืจ ื“ื‘ืจื™ื ื‘"ื–ื” ืขื•ื‘ื“ ื•ืื ื™ ืื—ื–ื•ืจ ืœืขืฉื•ืช ืจื™ืคืงื˜ื•ืจื™ื ื’ ื•ืœืชืงืŸ ืื—ืจ ื›ืš". ื”ืื—ืจ ื›ืš ืœื ืžื’ื™ืข ืืฃ ืคืขื, ื•ื“ื•ื•ืงื ื”ืจื™ืคืงื˜ื•ืจื™ื ื’ ื”ื•ืœืš ืœื—ืฉื•ืฃ ืขื•ื“ ื›ืžื” ื‘ืื’ื™ื ืฉืžืกืชืชืจื™ื ืฉื. ื–ื” ืœื ื’ืžื•ืจ ื›ืฉื–ื” ืขื•ื‘ื“, ื–ื” ื’ืžื•ืจ ื›ืฉื–ื” ื’ืžื•ืจ.

ToCode
1 420
# ืคื™ืชืจื•ืŸ Advent Of Code 2022 ื™ื•ื 6 ื‘ื™ื•ื ื™ืงืก ืื—ืจื™ ืฉืืœื” ืงืฆืช ืžืขื™ื™ืคืช ืขืœ ืžื’ื“ืœื™ื ื—ื–ืจื ื• ืœืฉืืœื•ืช ืฉืืคืฉืจ ืœืคืชื•ืจ ื‘ืฉื•ืจื” ืื—ืช ืฉืœ ื™ื•ื ื™ืงืก, ื•ื”ืฉืืœื” ืฉืœ ื™ื•ื 6 ื”ื™ืชื” ื”ื–ื“ืžื ื•ืช ืžืฆื•ื™ื ืช ืœื”ื™ื–ื›ืจ ื‘ืœื•ืœืื•ืช ื•ืžืฉืชื ื™ื ืฉืœ Bash. ื”ืžืฉื™ืžื” ื”ืคืขื ื”ื™ื ืœืงื—ืช ืžื—ืจื•ื–ืช ืชื•ื•ื™ื ื•ืœืžืฆื•ื ืืช ื”ืื™ื ื“ืงืก ืฉืœ ื”ืชื• ื”ืจืืฉื•ืŸ ืฉืืจื‘ืขืช ื”ืชื•ื•ื™ื ืฉืœืคื ื™ื• ืฉื•ื ื™ื ืื—ื“ ืžื”ืฉื ื™. ื”ื“ื•ื’ืžื” ื”ื™ืชื” ื”ืžื—ืจื•ื–ืช ื”ื–ื•:
mjqjpqmgbljsphdztnvjfqwrcgsmlb
ื•ืื ื—ื ื• ืจื•ืื™ื ืฉื‘ืงืจื™ืื” ืžืฉืžืืœ ืœื™ืžื™ืŸ ื”ืคืขื ื”ืจืืฉื•ื ื” ืฉืžื•ืคื™ืขื™ื 4 ืชื•ื•ื™ื ืฉื•ื ื™ื ื”ื™ื ื”ืชื•ื•ื™ื jqpm ื•ืœื›ืŸ ื”ืื™ื ื“ืงืก ืฉืœ ื”ืชื• ืฉืื—ืจื™ื”ื (ื”ืื•ืช g) ื”ื•ื 7. ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืื•ืชื• ืืคืฉืจ ืœืชืช ืœ bash ืœืขื‘ื•ื“: 1. ื ืจื•ืฅ ื‘ืœื•ืœืื” ืขื ืžืฉืชื ื” ืœื•ืœืื” i ืฉืžืชื—ื™ืœ ืž-1. 2. ืœื›ืœ ืขืจืš ืฉืœ i ื ื—ืชื•ืš ืžื”ืžื—ืจื•ื–ืช ืืช 4 ื”ืชื•ื•ื™ื ื”ื—ืœ ืžื”ืžืงื•ื ื” i ื‘ืขื–ืจืช cut. 3. ื ืฉืœื— ืืช egrep ืœื—ืคืฉ ืชื• ื›ืคื•ืœ ื‘ืžื—ืจื•ื–ืช. ืื ื”ื•ื ืœื ืžืฆื ืืคืฉืจ ืœืฆืืช ืžื”ืœื•ืœืื” ื•ืœื”ื“ืคื™ืก ืืช i+4-1 ื‘ื”ื ื—ื” ืฉื”ืงืœื˜ ื ืฉืžืจ ื‘ืงื•ื‘ืฅ input.txt ืชื•ื›ื ื™ืช ื” bash ื”ืžืชืื™ืžื” ื”ื™ื:
#!/bin/bash

i=1
while cat input.txt | cut -c $i- | cut -c -4 | egrep '(\w).*\1' >& /dev/null
do
    (( i++ ))
done

echo $(( i + 4 - 1))
ืื• ื‘ืฉื•ืจื” ืื—ืช:
i=1; while cat input.txt| cut -c $i- | cut -c -4 | egrep  '(\w).*\1' >& /dev/null ; do; (( i ++ )); done; echo $(( i + 4 - 1))
ืฉืœื•ืฉ ื ืงื•ื“ื•ืช ืœืงื—ืช ืžื”ืชื•ื›ื ื™ืช: 1. ื”ืจื‘ื” ืคืขืžื™ื ื ื•ื— ืœืคืฆืœ ืชื ืื™ ืœื›ืžื” ืชื ืื™ื ื‘ Pipeline. ื‘ืžืงืจื” ืฉืœื ื• ื‘ืฉื‘ื™ืœ ืœื—ืชื•ืš 4 ืชื•ื•ื™ื ื”ื—ืœ ืžืžืงื•ื i ืืคืฉืจ ืœืฉื‘ื•ืจ ืืช ื”ืฉื™ื ื™ื™ื ื‘ืฉื‘ื™ืœ ืœื™ืฆื•ืจ ืคืงื•ื“ืช cut ืื—ืช, ืื‘ืœ ื™ื•ืชืจ ืงืœ ืœืคืฆืœ ืืช ื–ื” ืœืฉืชื™ ืคืงื•ื“ื•ืช cut ืื—ืช ืื—ืจื™ ื”ืฉื ื™ื”, ืื—ืช ืžืชื—ื™ืœื” ืžื”ืžืงื•ื ื” i ื•ื”ืฉื ื™ื” ื—ื•ืชื›ืช 4 ืชื•ื•ื™ื. 2. ืžืื•ื“ ื ื•ื— ืฉื‘ bash ืคืงื•ื“ืช while ืžื‘ืฆืขืช ืคืงื•ื“ื” ืฉื”ื™ื ืžืงื‘ืœืช ืฉื•ื‘ ื•ืฉื•ื‘ ื›ืœ ืขื•ื“ ื”ืคืงื•ื“ื” ืžืฆืœื™ื—ื”. 3. ืกื•ื’ืจื™ื™ื ืขื’ื•ืœื™ื ื›ืคื•ืœื™ื ื‘ bash "ื‘ื•ืจื—ื™ื" ืžื”ืขื•ืœื ืฉืœ bash ืœืขื•ืœื ื—ืฉื‘ื•ื ื™ ืจื’ื™ืœ, ื•ื‘ื’ืœืœ ื–ื” ืขื“ื™ืฃ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ืฉืจื•ืฆื™ื ืœื‘ืฆืข ืคืขื•ืœื•ืช ืืจื™ืชืžื˜ื™ื•ืช ืขืœ ืžืฉืชื ื™ื. ืœืžืจื•ืช ืฉืœืกืงืจื™ืคื˜ื™ื ื™ืฉ ื‘ืขื™ื™ืช ืชื—ื–ื•ืงื” ื•ื‘ืจื•ื‘ ื”ืžืงืจื™ื ื™ื•ืชืจ ืงืœ ืœื›ืชื•ื‘ ื—ื“ืฉ ืžืืฉืจ ืœืขื“ื›ืŸ ืงื™ื™ื, ื”ื ืขื“ื™ื™ืŸ ื›ืœื™ ืขื‘ื•ื“ื” ืขื•ืฆืžืชื™ ื‘ืžื™ื•ื—ื“ ืœืžืฉื™ืžื•ืช ืงื˜ื ื•ืช, ื‘ื–ื›ื•ืช ื”ืคื•ืจื˜ื‘ื™ืœื™ื•ืช, ืงืœื•ืช ื”ื›ืชื™ื‘ื” ื•ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืงืœื•ืช ื‘ื›ืœ ื”ื›ืœื™ื ื”ืงื™ื™ืžื™ื ื‘ื™ื•ื ื™ืงืก.

ToCode
1 420
- ืงื— ืื•ื•ื™ืจ ืื—ื™ื ื•. ืจืง ื‘ื’ืœืœ ืฉื”ืื•ื˜ื•ื‘ื•ืก ื ื•ืกืข ื‘ืจื•ื•ืจืก ืœื ืื•ืžืจ ืฉืื ื—ื ื• ืื‘ื•ื“ื™ื. ื”ืืžืช ืฉืœื ื”ื’ ื”ืื•ื˜ื•ื‘ื•ืก ื™ืฉ ื•ื•ื™ื– ื‘ื“ื™ื•ืง ื›ืžื• ืœืš. ืื ืจืง ืชืชืŸ ืœื• ื›ืชื•ื‘ืช ืฉืœ ืชื—ื ื” ื”ื•ื ื‘ืจื’ืข ื™ืกืข ืœืฉื. ื™ื•ืชืจ ืžื–ื”, ื’ื™ื˜ ืฉื•ืžืจ ืืช ื›ืœ ื”ื›ืชื•ื‘ื•ืช ืฉืœ ื”ืชื—ื ื•ืช ืฉื”ื•ื ื›ื‘ืจ ืจืื”, ื›ื“ื™ ืฉืœื ื ืœืš ืœืื™ื‘ื•ื“. ืชื—ืฉื•ื‘ ืขืœ ื–ื” ื›ืžื• ื™ื•ืžืŸ ืžืกืข ืฉื’ื™ื˜ ืžื ื”ืœ. ืกื•ื’ ืื—ื“ ืฉืœ ืื™ื ื“ืงืกื™ื ื ืงืจื Branch-ื™ื, ืฉื”ื ื‘ืขืฆื ืฉืžื•ืช ื™ื•ืชืจ ื ื•ื—ื™ื ืœืชื—ื ื•ืช. ื‘ื’ืœืœ ืฉื”ื™ื•ืžืŸ ื›ืชื•ื‘ ื‘ืขื™ืคืจื•ืŸ, ืืคืฉืจ ืชืžื™ื“ ืœื”ื•ืกื™ืฃ ืขื•ื“ "ืจืฉื•ืžื•ืช", ื›ืœื•ืžืจ ืขื•ื“ ืฉืžื•ืช ืœืชื—ื ื•ืช ืฉืœื ื•, ื•ื’ื ืœื”ื–ื™ื– ืืช ื”ืฉืžื•ืช ื‘ื™ืŸ ืชื—ื ื•ืช. ืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื›ืœ ื”ืฉืžื•ืช ืฉื’ื™ื˜ ื›ืชื‘ ืขื“ ืขื›ืฉื™ื• ืขื:
$ git branch -v
* (HEAD detached at b39bd7e) b39bd7e second stop
  main                       fb7fdb6 fourth stop
ื•ืื ื™ ืจื•ืื” ืืช ื”ืฉื ื”ืžื™ื•ื—ื“ HEAD ืฉืชืžื™ื“ ืžืชื™ื—ืก ืœืชื—ื ื” ื‘ื” ื”ืื•ื˜ื•ื‘ื•ืก ื ืžืฆื ื›ืจื’ืข, ื•ืืช ื”ืฉื main ืฉืžื•ื“ื‘ืง ืœืžื–ื”ื” ื”ืชื—ื ื” fb7fdb6. ื‘ื•ื ื ื™ืจื’ืข ื•ื ืงืคื™ืฅ ืืช ื”ืื•ื˜ื•ื‘ื•ืก ื—ื–ืจื” ืœ main, ืฉื”ื™ื ื›ืจื’ืข ื”ืชื—ื ื” ื”ื›ื™ ืจื—ื•ืงื” ื‘ืžืกืœื•ืœ:
$ git switch main
Previous HEAD position was b39bd7e second stop
Switched to branch 'main'
ืขื›ืฉื™ื• ืœื•ื’ ื›ื‘ืจ ืžืจืื” ืืช ื›ืœ ื”ืžืกืœื•ืœ ื›ื™ ื”ืชื—ืœื ื• ืžื”ื ืงื•ื“ื” ื”ืจื—ื•ืงื” ื‘ื™ื•ืชืจ, ื•ื›ืœ ื ืงื•ื“ื” ื™ื›ื•ืœื” "ืœืจืื•ืช" ืืช ื–ื• ืฉื‘ืื” ืœืคื ื™ื”:
$ git log --oneline | cat

fb7fdb6 fourth stop
43ea893 third stop
b39bd7e second stop
f812a16 initial commit
ืฉื ื™ ื”ืกื•ื’ื™ื ื”ืžืจื›ื–ื™ื™ื ืฉืœ "ืฉืžื•ืช" ืฉื’ื™ื˜ ืžื—ื–ื™ืง ื”ื branch ื• tag, ื›ืฉื”ื”ื‘ื“ืœ ื‘ื™ื ื™ื”ื ื”ื•ื ืฉ branch ืžืชืงื“ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื›ืฉืื ื™ ื™ื•ืฆืจ ืชื—ื ื•ืช ื—ื“ืฉื•ืช (ื‘ื’ืœืœ ื–ื” ืœืžืจื•ืช ืฉืœื ื”ืชื™ื—ืกืชื™ ืืœื™ื• ืขื“ ืขื›ืฉื™ื•, ื”ื‘ืจืื ืฅ main ื”ื›ื™ืœ ืืช ื”ืžื–ื”ื” ืฉืœ ื”ืชื—ื ื” ื”ืจื—ื•ืงื” ื‘ื™ื•ืชืจ), ื• tag ื ืฉืืจ ื‘ืžืงื•ื ื‘ื• ื™ืฆืจื ื• ืื•ืชื•. ื•ืื’ื‘ ื”ืคืงื•ื“ื” git log ื™ื•ื“ืขืช ืœืงื‘ืœ ืชื—ื ืช ื”ืชื—ืœื”, ื›ืš ืฉืœื ืžืฉื ื” ืื™ืคื” ืืชื” ื‘ืคืจื•ื™ืงื˜ ืชื•ื›ืœ ืœื”ืงืœื™ื“ git log main ื•ืœืจืื•ืช ืืช ื”ืœื•ื’ ื”ื—ืœ ืžืชื—ื ืช main. - ืื ื™ ื—ื•ืฉื‘ ืฉืื ื™ ืžืชื—ื™ืœ ืœื”ื‘ื™ืŸ. ืื– ื‘ืขืฆื ื”ืื•ื˜ื•ื‘ื•ืก ื”ื•ื ื›ืžื• ืชื™ืงื™ื™ืช ื”ืขื‘ื•ื“ื” ืฉืœื™. ื›ืฉื”ื•ื ื ื•ืกืข ื‘ื™ืŸ ืชื—ื ื•ืช ื”ืงื‘ืฆื™ื ืฉืื ื™ ืจื•ืื” ืžืฉืชื ื™ื, ื•ื‘ื›ืœ ืชื—ื ื” ื”ื•ื ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืชื—ื ื” ื”ืงื•ื“ืžืช ื›ื“ื™ ืœื ืกื•ืข ืืœื™ื”. ื‘ืฉื‘ื™ืœ ืœื ืกื•ืข ืงื“ื™ืžื” ื‘ื–ืžืŸ ื”ื ื”ื’ ืคื•ืชื— ืืช ืกืคืจ ื”ื›ืชื•ื‘ื•ืช ืฉืœื• ื•ื›ืš ื™ื•ื“ืข ืœื”ื’ื™ืข ื’ื ืœืชื—ื ื•ืช ืจื—ื•ืงื•ืช, ื•ื”ืงื‘ืฆื™ื ืฉืœื™ ืืฃ ืคืขื ืœื ื™ืœื›ื• ืœืื™ื‘ื•ื“. ื ื›ื•ืŸ? - ื›ืžืขื˜, ื”ืืžืช ืฉื‘ืขื•ื“ ืฉืชื—ื ื•ืช ืื™ ืืคืฉืจ ืœื”ื–ื™ื– ืžืจื’ืข ืฉื ื•ืฆืจื•, ืืช ืกืคืจ ื”ื›ืชื•ื‘ื•ืช ืืคืฉืจ ืœืฉื ื•ืช ื›ืœ ื”ื–ืžืŸ. ื”ืคืงื•ื“ื” ื”ื‘ืื” ืžื•ื—ืงืช ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืชื—ื ื” ื”ืื—ืจื•ื ื” ื‘ืกืคืจ (main) ื•ื‘ืžืงื•ืžื” ืจื•ืฉืžืช ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืชื—ื ื” ื”ืฉื ื™ื” ืœื™ื“ ื”ืฉื main:
git reset --hard b39bd7e
ื ื ืกื” ืขื›ืฉื™ื• ืืช ื”ื˜ืจื™ืงื™ื ืฉืœืžื“ื ื• ื•ื ื•ืคืชืข ืœื’ืœื•ืช:
$ git log main --oneline| cat
b39bd7e second stop
f812a16 initial commit

$ git branch -v | cat
* main b39bd7e second stop
ื‘ืกืคืจ ื”ื›ืชื•ื‘ื•ืช ืฉืœื™ ื”ืฉื main ืžื•ื“ื‘ืง ืขื›ืฉื™ื• ืœื™ื“ ืชื—ื ื” b39bd7e. ื”ืชื—ื ื” fb7fdb6 ืขื“ื™ื™ืŸ ื ืžืฆืืช ื‘ืฉื›ื•ื ื”, ืื‘ืœ ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืืœื™ื” ืื ื™ ื—ื™ื™ื‘ ืœื”ืฉืชืžืฉ ื‘ื›ืชื•ื‘ืช ื”ืžื“ื•ื™ืงืช ืฉืœื”. ืœืคื ื™ ืฉื ืฉื›ื— ืื ื™ ืžื•ืกื™ืฃ ืื•ืชื” ืœืกืคืจ ื”ื›ืชื•ื‘ื•ืช ืขื ืฉื ื—ื“ืฉ:
$ git branch dev fb7fdb6
ื•ืขื›ืฉื™ื• ื™ืฉ ืœื™ ืฉืชื™ ื›ืชื•ื‘ื•ืช ื‘ืกืคืจ:
$ git branch -v
  dev  fb7fdb6 fourth stop
* main b39bd7e second stop
ื•ืื ื™ ืฉื•ื‘ ื™ื›ื•ืœ ืœื—ื–ื•ืจ ืœื›ืชื•ื‘ืช ื”ืจื—ื•ืงื” ื‘ื™ื•ืชืจ:
$ git switch dev
$ git log --oneline
fb7fdb6 fourth stop
43ea893 third stop
b39bd7e second stop
f812a16 initial commit
- ื ืฉืžืข ืžืœื—ื™ืฅ. ื•ืื™ืš ื–ื” ืžืกืชื“ืจ ืขื merge-ื™ื? ืจื™ื‘ื™ื™ืกื™ื? ืฆ'ืจื™ ืคื™ืง? - ื›ืŸ ืฆืจื™ืš ืœื”ื™ื–ื”ืจ ืขื ื’ื™ื˜, ืื‘ืœ ื›ืฉืžื‘ื™ื ื™ื ืืช ื”ืžื•ื“ืœ ืฉืœื• ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืฆืืช ืžืžืฆื‘ื™ื ืžื‘ื™ื›ื™ื. ื”ื™ื™ืชื™ ืฉืžื— ืœื”ื™ืฉืืจ ื•ืœืงืฉืงืฉ ืื‘ืœ ืื ื™ ืจื•ืื” ืืช ื”ืื•ื˜ื•ื‘ื•ืก ืฉืœื™ ืžื’ื™ืข. ืขืœ ืžืจื’'ื™ื, ืจื™ื‘ื™ื™ืกื™ื ื•ื›ืœ ื”ืฉืืจ ื ืฆื˜ืจืš ืœื”ืžืฉื™ืš ืœื“ื‘ืจ ื‘ื™ื•ื ืื—ืจ. ืื”, ื•ื›ืžืขื˜ ืฉื›ื—ืชื™ - ื™ืฉ ื‘ื˜ื•ืงื•ื“ ืงื•ืจืก ื’ื™ื˜ ื ื”ื“ืจ ืฉืžืกื‘ื™ืจ ืืช ื”ืคืงื•ื“ื•ืช ื™ื—ื“ ืขื ื”ืžื•ื“ืœ ื”ืžื ื˜ืœื™ ืฉืžืชืื™ื ืœื”ืŸ. ื ืชืจืื” ื‘ืชื—ื ื” ื”ื‘ืื”.

ToCode
1 420
# ื’ื™ื˜ ื”ื•ื ื‘ืกืš ื”ื›ืœ ื’ืจืฃ - ืืชื” ื™ื•ื“ืข ืžืื•ื“ ืขื•ื–ืจ ืœื—ืฉื•ื‘ ืขืœ ื’ื™ื˜ ื‘ืชื•ืจ ื’ืจืฃ ืžื›ื•ื•ืŸ. - ื’ืจืฃ ืžื”? - ื’ืจืฃ ืžื›ื•ื•ืŸ. ื’ืจืฃ ื”ื•ื ืื•ืกืฃ ืฉืœ ืื•ื‘ื™ืงื˜ื™ื ืฉื›ืœ ืฉื ื™ื™ื ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืžืงื•ืฉืจื™ื ื–ื” ืœื–ื”, ื•ืžื›ื•ื•ืŸ ืื•ืžืจ ืฉื”ืงื™ืฉื•ืจ ื‘ื™ืŸ ืฉื ื™ ืื•ื‘ื™ืงื˜ื™ื ื”ื•ื ืœื›ื™ื•ื•ืŸ ืื—ื“. ืชื—ืฉื•ื‘ ืขืœ ืžืกืœื•ืœ ืฉืœ ืื•ื˜ื•ื‘ื•ืก - ืืคืฉืจ ืœืฆื™ื™ืจ ื›ืœ ืชื—ื ื” ืขืœ ื”ืžืกืœื•ืœ ื‘ืชื•ืจ ืขื™ื’ื•ืœ ืขืœ ื”ื“ืฃ, ื•ืื ื”ืื•ื˜ื•ื‘ื•ืก ื ื•ืกืข ืžืชื—ื ื” ื ืœืชื—ื ื” ื‘ ื ืฆื™ื™ืจ ื—ืฅ ื‘ื™ืŸ ืฉืชื™ื”ืŸ ืœืคื™ ื›ื™ื•ื•ืŸ ื”ื ืกื™ืขื”. - ืื‘ืœ ืื™ืš ืื•ื˜ื•ื‘ื•ืก ืงืฉื•ืจ ืœื’ื™ื˜? - ื›ืžื• ืฉื”ืื•ื˜ื•ื‘ื•ืก ื ื•ืกืข ืžืชื—ื ืช ื”ืžื•ืฆื ืœืชื—ื ืช ื”ื™ืขื“, ื›ืš ื”ืงื•ื“ ืฉืœืš ืžืชืงื“ื ืžื ืงื•ื“ืช ื”ื”ืชื—ืœื” (ื”ื™ื•ื ื‘ื• ื”ืชื—ืœืช ืœืขื‘ื•ื“ ืขืœ ื”ืคืจื•ื™ืงื˜) ืขื“ ื ืงื•ื“ืช ื”ื™ืขื“ (ื”ื™ื•ื ื‘ื• ื”ื—ืœื˜ืช ืœืงื‘ื•ืจ ืืช ื”ืคืจื•ื™ืงื˜ ื•ืœืขื‘ื•ืจ ืœื›ืชื•ื‘ ืžืฉื”ื• ื—ื“ืฉ). ื•ื›ืŸ ื–ื” ืงืฆืช ืฉื•ื ื” ืžืชื—ื ื•ืช ืื•ื˜ื•ื‘ื•ืก ื›ื™ ื”ืื•ื˜ื•ื‘ื•ืก ืžืชื—ื™ืœ ื‘ื ืกื™ืขื” ื›ืฉื”ื•ื ื™ื•ื“ืข ืื™ืš ื™ืจืื” ื›ืœ ื”ืžืกืœื•ืœ, ื•ืื™ืœื• ืื ื—ื ื• ืžืชื—ื™ืœื™ื ืœืงื•ื“ื“ ื›ืฉื›ืœ ืคืขื ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช ืจืง ืืช ื”ืชื—ื ื” ื”ื‘ืื”. ืื‘ืœ ื”ื”ื‘ื“ืœ ื”ื™ื•ืชืจ ื—ืฉื•ื‘ ื”ื•ื ื›ื™ื•ื•ืŸ ื”ื ืกื™ืขื”. - ืžื” ื”ื›ื•ื•ื ื” ื›ื™ื•ื•ืŸ ื”ื ืกื™ืขื”? - ื”ืื•ื˜ื•ื‘ื•ืก ื ื•ืกืข ืžืชื—ื ืช ื”ืžื•ืฆื ืœืชื—ื ืช ื”ื™ืขื“, ืื– ื›ืฉืฆื™ื™ืจื ื• ืื•ืชื• ื‘ืชื•ืจ ื’ืจืฃ ื›ืœ ืคืขื ืฆื™ื™ืจื ื• ื—ืฅ ืžื”ืชื—ื ื” ืœืชื—ื ื” ื”ื‘ืื”. ื‘ืฉื‘ื™ืœ ืœืงื—ืช ืืช ื”ืื ืœื•ื’ื™ื” ื”ื–ืืช ืœื’ื™ื˜ ืืคืฉืจ ืœื“ืžื™ื™ืŸ ืฉื›ืœ ืคืขื ืฉืื ื—ื ื• ืขื•ืฉื™ื ืงื•ืžื™ื˜ ืื ื—ื ื• ื‘ื•ื ื™ื ืชื—ื ืช ืื•ื˜ื•ื‘ื•ืก ื—ื“ืฉื” ืขืœ ื”ืžืกืœื•ืœ, ื•ื‘ืชื—ื ื” ื”ื–ืืช ืžื—ื‘ื™ืื™ื ื‘ืงื•ืคืกื” ืืช ื›ืœ ื”ืงื‘ืฆื™ื ื‘ืคืจื•ื™ืงื˜. ื‘ื–ืžืŸ ื‘ื ื™ื™ืช ื”ืชื—ื ื” ืื ื—ื ื• ืœื ื™ื•ื“ืขื™ื ืžื” ืชื™ื”ื™ื” ื”ืชื—ื ื” ืฉืื—ืจื™ื” (ืื• ืื ืืคื™ืœื• ืชื”ื™ื” ืื—ืช ื‘ื›ืœืœ), ืื– ืขืœ ื›ืœ ืชื—ื ื” ื’ื™ื˜ ื›ื•ืชื‘ ืืช ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืชื—ื ื” ืฉื”ื™ืชื” ืœืคื ื™ื”. ื‘ืฆื•ืจื” ื›ื–ืืช ื›ืœ ืคืขื ืฉืื•ื˜ื•ื‘ื•ืก ืขื•ืฆืจ ื‘ืชื—ื ื” ื”ื•ื ืชืžื™ื“ ื™ื›ื•ืœ ืœื ืกื•ืข ืœืชื—ื ื” ืฉื”ื™ืชื” ืœืคื ื™ื”, ืื‘ืœ ื‘ืฉื•ื ืฉืœื‘ ื”ื•ื ืœื ื™ื•ื“ืข ืžื” ื”ื›ืชื•ื‘ืช ืฉืœ ื”ืชื—ื ื” ื”ื‘ืื”. - ืขื“ื™ื™ืŸ ืœื ื”ื‘ื ืชื™. ืื™ืš ื”ืงื•ืžื™ื˜ ืงืฉื•ืจ ืœืชื—ื ืช ืื•ื˜ื•ื‘ื•ืก? - ื‘ื•ื ื ื ืกื” ืืช ื–ื” ื‘ืงื•ื“. ืื ื™ ื™ื•ืฆืจ ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืขื ื’ื™ื˜ ื‘ืชื™ืงื™ื” ื”ื ื•ื›ื—ื™ืช:
$ git init .
ื›ื•ืชื‘ ืฉื˜ื•ื™ื•ืช ื‘ืื™ื–ื” ืงื•ื‘ืฅ ื•ืฉื•ืžืจ ืื•ืชื• ื‘ืงื•ืคืกื” - ื–ืืช ื”ืชื—ื ื” ื”ืจืืฉื•ื ื”:
$ echo hello world > readme.txt
$ git add readme.txt
$ git commit -m 'initial commit'
ืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื›ืœ ื”ืชื—ื ื•ืช ืขื ืคืงื•ื“ืช git log, ืื‘ืœ ื›ืจื’ืข ื™ืฉ ืฉื ืจืง ืื—ืช:
$ git log --oneline
f812a16 initial commit
ืœืชื—ื ื” ื”ืื—ืช ืฉืœื™ ืื’ื‘ ื™ืฉ ืฉื - f812a16. ื–ื” ืžื–ื”ื” ื™ื™ื—ื•ื“ื™ ืฉืœ ื”ืชื—ื ื” ื”ื–ืืช. ื ืžืฉื™ืš ืœื‘ื ื•ืช ืขื•ื“ ื›ืžื” ืชื—ื ื•ืช ื‘ืžืกืœื•ืœ:
$ echo second stop > status.txt
$ git add .
$ git commit -m 'second stop'
[main b39bd7e] second stop

$ echo third stop > status.txt
$ git add .
$ git commit -m 'third stop'
[main 43ea893] third stop

$ echo fourth stop > status.txt
$ git add .
$ git commit -m 'fourth stop'
[main fb7fdb6] fourth stop
ื”ืœื•ื’ ืขื›ืฉื™ื• ืžืจืื” ืืช ื›ืœ ื”ืชื—ื ื•ืช:
$ git log --oneline

fb7fdb6 fourth stop
43ea893 third stop
b39bd7e second stop
f812a16 initial commit
ืื‘ืœ ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื›ืืŸ ื”ื•ื ื”ื›ื™ื•ื•ืŸ: ื›ืœ ืชื—ื ื” "ืžืฆื‘ื™ืขื”" ืขืœ ื”ืชื—ื ื” ืฉื‘ืื” ืœืคื ื™ื”. ืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื–ื” ืขื cat-file:
$ git cat-file commit fb7fdb6

tree 2394fdb509358a49d452574536bec528d119ba06
parent 43ea893b8bda3420d7a794ef14a7246d94f88ced
author ynonp <ynonperek@gmail.com> 1670589664 +0200
committer ynonp <ynonperek@gmail.com> 1670589664 +0200

fourth stop
ืื—ืจื™ ื”ืชื•ื•ื™ืช parent ืื ื™ ืจื•ืื” ืืช ืฉื ื”ืชื—ื ื” ื”ืฉืœื™ืฉื™ืช, ื›ื™ ื”ืชื—ื ื” ื”ืจื‘ื™ืขื™ืช "ื™ื•ื“ืขืช" ืฉืœืคื ื™ื” ื”ื™ืชื” ื”ืชื—ื ื” ื”ืฉืœื™ืฉื™ืช (ื•ื›ืŸ ื”ืฉื ืฉืžื•ืคื™ืข ื›ืืŸ ื”ื•ื ื™ื•ืชืจ ืืจื•ืš ืžื”ืฉื ื‘ื• ืื ื™ ืžืฉืชืžืฉ, ืื‘ืœ ื–ื” ืื•ืชื• ืงื•ืžื™ื˜ ื”ืงื™ืฆื•ืจ ื”ื•ื ืจืง ื‘ืฉื‘ื™ืœื ื•). ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืžืฉื™ืš ืืช ื”ืžืฉื—ืง ื•ืœืจืื•ืช ืฉื›ืœ ืชื—ื ื” ืื—ืจืช ืžื›ื™ืจื” ืจืง ืืช ื”ืชื—ื ื” ืฉื‘ืื” ืœืคื ื™ื”. ื–ืืช ื”ืกื™ื‘ื” ืฉ git log ืขืฉื•ื™ ืœื”ื™ื•ืช ื›ืœ ื›ืš ืžื‘ืœื‘ืœ - ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื• ื”ื™ื ืœื”ืจืื•ืช ืืช ืื•ืชื• ื’ืจืฃ, ื”ื—ืœ ืžื”ืชื—ื ื” ื‘ื” ืื ื™ ื ืžืฆื ื•ืื—ื•ืจื” ืขื“ ืชื—ื™ืœืช ื”ืคืจื•ื™ืงื˜. - ืจื’ืข ืจื’ืข, ืžื” ื”ื›ื•ื•ื ื” "ื”ืชื—ื ื” ื‘ื” ืืชื” ื ืžืฆื?" - ืืคืฉืจ ืœื ืกื•ืข ื‘ื™ืŸ ื”ืชื—ื ื•ืช? - ื‘ืจื•ืจ. ื–ืืช ื›ืœ ื”ืคื•ืื ื˜ื”. ื”ืคืงื•ื“ื” git switch ืœื•ืงื—ืช ืื•ืชืš ืœืชื—ื ื” ืื—ืจืช. ื”ื ื” ื“ื•ื’ืžื”:
$ git switch --detach b39bd7e

HEAD is now at b39bd7e second stop
ืžื‘ื˜ ืขืœ ื”ืคืจื•ื™ืงื˜ ื™ืจืื” ืœื ื• ืืช ื”ืงื‘ืฆื™ื ื›ืžื• ืฉื”ื ื”ื™ื• ื›ืฉื”ื™ื™ื ื• ื‘ืชื—ื ื” ื”ืฉื ื™ื”. ืื‘ืœ ื”ืฉื•ืก ื”ืืžื™ืชื™ ื”ื•ื ื”ืคืœื˜ ืฉืœ git log:
$ git log --oneline
b39bd7e second stop
f812a16 initial commit
ื”ืชื—ื ื” ื”ืฉื ื™ื” ื™ื›ื•ืœื” ืœื”ืกืชื›ืœ ืจืง "ืื—ื•ืจื”" ืœืชื—ื ื” ื”ืจืืฉื•ื ื”, ื•ืœื›ืŸ ื–ื” ืžื” ืฉืื ื—ื ื• ืจื•ืื™ื ื‘ืœื•ื’. ื”ืชื—ื ื•ืช ื”ืฉืœื™ืฉื™ืช ื•ื”ืจื‘ื™ืขื™ืช ืื™ื ืŸ ื‘ืžืกืœื•ืœ. - ืžื”? ืžื—ืงืช ืœื™ ืืช ื›ืœ ื”ืคืจื•ื™ืงื˜?? ืื– ืื™ืš ืื ื™ ื—ื•ื–ืจ ืขื›ืฉื™ื• ืœื ืงื•ื“ืช ื”ื”ืชื—ืœื”?

ToCode
1 420
# ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื˜ื•ื‘ื•ืช ืืœื” ื›ืžื” ืงืจื™ื˜ืจื™ื•ื ื™ื ืฉืืชื ื™ื›ื•ืœื™ื ืœืืžืฅ ื›ื“ื™ ืœืจืื•ืช ืื ื‘ื“ื™ืงื•ืช ื”ื™ื—ื™ื“ื” ืฉืœื›ื ืขื•ื‘ื“ื•ืช ื‘ืฉื‘ื™ืœื›ื, ืื• ืืชื ื‘ืฉื‘ื™ืœืŸ- 1. ืืชื ืžืจื™ืฆื™ื ืืช ื”ื‘ื“ื™ืงื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช (ืœืžืฉืœ ืื—ืจื™ ื›ืœ ืฉืžื™ืจื”), ื•ื”ืชื•ืฆืื•ืช ืžืชืขื“ื›ื ื•ืช ื›ืœ ื”ื–ืžืŸ ื‘ืชื•ืš ืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื— ืฉืœื›ื. 2. ื”ื‘ื“ื™ืงื” ื ื›ืฉืœืช ื›ืฉืืชื ืฉื•ื‘ืจื™ื ืžืฉื”ื•, ื•ื›ืฉื”ื™ื ื ื›ืฉืœืช ืืชื ืžื‘ื™ื ื™ื ื‘ื“ื™ื•ืง ืžื” ืฉื‘ืจืชื. 3. ื”ื‘ื“ื™ืงื” ื ื›ืฉืœืช ื›ืฉืžืฉื ื™ื ืžืฉื”ื• ืžื”ื•ืชื™ ื‘ืœื•ื’ื™ืงื”, ื•ื‘ืžืงืจื” ื›ื–ื” ื”ืชื™ืงื•ืŸ ืฉืœื” ืœื ืœื•ืงื— ืœื›ื ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ (ื‘ื™ื—ืก ืœืžื” ืฉืœืงื— ืœืฉื ื•ืช ืืช ื”ืœื•ื’ื™ืงื” ื‘ืงื•ื“ ื”ืžืงื•ืจื™). 4. ืืชื ืžืจื’ื™ืฉื™ื ื‘ื ื•ื— ืœื”ื™ื›ื ืก ืœืงื•ื“ ื”ื‘ื“ื™ืงื” ื•ืœืขืฉื•ืช ืฉื Refactor, ื‘ื“ื™ื•ืง ื›ืžื• ืฉืืชื ืžืจื’ื™ืฉื™ื ื‘ื ื•ื— ืขืœ ืงื•ื“ ืจื’ื™ืœ ืฉืœื›ื. 5. ืืชื ืžืจื’ื™ืฉื™ื ื‘ื ื•ื— ืœืฉื ื•ืช ื—ืœืงื™ื ื‘ืงื•ื“ ื”ืžืขืจื›ืช, ื›ื™ ืืชื ื™ื•ื“ืขื™ื ืฉืื ืชืฉื‘ืจื• ืžืฉื”ื• ื—ืฉื•ื‘ ืชื”ื™ื” ืื™ื–ื• ื‘ื“ื™ืงื” ืฉืชืงืคื•ืฅ. 6. ืจื•ื‘ ื”ื–ืžืŸ ื•ื›ืฉืžื‘ืฆืขื™ื ื‘ืงื•ื“ ืฉื™ื ื•ื™ื™ื ืฉืœื ืžืฉืคื™ืขื™ื ื™ืฉื™ืจื•ืช ืขืœ ื”ื“ื‘ืจ ืฉืื•ืชื• ื”ื‘ื“ื™ืงื” ื‘ื•ื“ืงืช, ื”ื‘ื“ื™ืงื” ืžืžืฉื™ื›ื” ืœืขื‘ื•ืจ. 7. ืœื‘ื“ื™ืงื” ืื™ืŸ ืชื•ืคืขื•ืช ืœื•ื•ืื™ - ืงื•ื“ ื‘ื“ื™ืงื” ืœื ื™ืฉืœื— ืคืชืื•ื ืžื™ื™ืœ ืœืžื™ืฉื”ื•, ื™ื—ื™ื™ื‘ ืืชื›ื ื‘ืชืฉืœื•ื ืื• ื™ืขืฉื” ื›ืœ ื“ื‘ืจ "ืžืกื•ื›ืŸ" ืื—ืจ ื‘ืžืขืจื›ืช. ืžืจื’ืข ืฉืื ื—ื ื• ืžืชื—ื™ืœื™ื ืœื”ืกืชื›ืœ ืขืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื‘ืชื•ืจ ืžื•ืฆืจ ืฉืื ื—ื ื• ื”ืœืงื•ื— ืฉืœื•, ืื ื—ื ื• ื™ื›ื•ืœื™ื ื’ื ืœื”ื™ื•ืช ื‘ื™ืงื•ืจืชื™ื™ื ื›ืœืคื™ื”ืŸ: ืืœื” ืฉืขื•ื–ืจื•ืช ืœื ื• ื ืฉืืจื•ืช, ืืช ืืœื” ืฉืืคืฉืจ ืœืฉืคืจ ื ืฉืคืจ, ื•ืืช ื”ื’ืจื•ืขื•ืช ื ืžื—ืง.