Skip to content

Latest commit

Β 

History

History
34 lines (24 loc) Β· 3.79 KB

File metadata and controls

34 lines (24 loc) Β· 3.79 KB
description Gitμ—μ„œ μ•Œκ²Œ 된 지식을 ν•œ λˆˆμ—
icon git

Gitμ—μ„œ μ•Œκ²Œ 된 지식

1. Git tree에 λŒ€ν•΄μ„œ

좜처 : Github action으둜 Sync Fork μžλ™ν™”ν•˜κΈ° - push 될 λ•Œλ§ˆλ‹€

μ²˜μŒμ—λŠ” "같은 μ»€λ°‹ν•΄μ‹œλ‘œ pushν•œλ‹€", "Git treeλ₯Ό κ°™κ²Œ ν•œλ‹€" λŠ” νŒ€μ›μ˜ 말이 잘 이해가 κ°€μ§€ μ•Šμ•˜κ³ , 덕뢄에 Git의 ꡬ쑰λ₯Ό λ‹€μ‹œ ν•œλ²ˆ κ³΅λΆ€ν•˜κ²Œ λ˜λŠ” 쒋은 계기가 λ˜μ—ˆλ‹€.

Git은 각 μƒνƒœλ“€μ„ μŠ€λƒ…μƒ·μ„ ν•΄μ‹œκ°’μœΌλ‘œ κ΅¬λΆ„ν•˜κ³ (commit), 이듀을 μ—°κ²°ν•˜μ—¬ ν•˜λ‚˜μ˜ κ±°λŒ€ν•œ treeλ₯Ό κ΅¬μ„±ν•˜λŠ”λ° 이게 history, 즉 Git treeκ°€ λ˜λŠ” 것이닀. Git의 각 컀밋듀은 이 트리λ₯Ό κ΅¬μ„±ν•˜κΈ° μœ„ν•΄ λͺ¨λ“  컀밋은 λΆ€λͺ¨ μ»€λ°‹μ˜ 포인터λ₯Ό ν•¨κ»˜ κ°€μ§€κ³  μžˆλ‹€. μœ„ λ§ν¬μ—μ„œλŠ” μ„œλ‘œ λ‹€λ₯Έ λΆ€λͺ¨λ₯Ό κ°€λ¦¬ν‚€λ˜ 컀밋을 κ°•μ œλ‘œ μ—°κ²°ν•˜λŠ” 것이기 λ•Œλ¬Έμ— Orgin repo와 forked repoλŠ” μ„œλ‘œ λ‹€λ₯Έ 컀밋 ν•΄μ‹œλ₯Ό κ°–κ²Œ λœλ‹€. ν•˜μ§€λ§Œ 이 λ°©λ²•μ˜ 경우 개인 레포λ₯Ό remote url에 λ“±λ‘ν•˜μ—¬ 컀밋 내역을 가져와 Origin repo의 졜근 λ³€κ²½μ‚¬ν•­μ˜ μ»€λ°‹μœΌλ‘œ μžμ—°μŠ€λŸ½κ²Œ μ—°κ²°ν•˜λ―€λ‘œ λ™μΌν•œ Git treeλ₯Ό κ°–κ²Œ λœλ‹€.

과정이 잘 이해가 μ•ˆκ°”λ˜ 첫 μ‹œλ„λ‘œλŠ” λ¬΄μž‘μ • 두 레포의 λ³€κ²½ 사항을 merge ν•΄μ„œ, μ–‘ λ ˆν¬μ— λ‹€μ‹œ pushν•˜λ©΄ λ˜λ‚˜? μ‹Άμ—ˆλ‹€. ν•˜μ§€λ§Œ μ²΄ν¬μ•„μ›ƒμ‹œμ— 토큰을 λ„£μ–΄μ£Όμ§€ μ•ŠμœΌλ‹ˆ merge ν•  수 μ—†λ‹€λŠ” μ—λŸ¬κ°€ λ–΄λ‹€...
덕뢄에 μ„œλ‘œ λ‹€λ₯Έ 레포끼리 λ³‘ν•©μ‹œ μ‚¬μš©ν•  수 μžˆλŠ” --allow-unrelated-histories λΌλŠ” git merge μ˜΅μ…˜λ„ μ•Œκ²Œ λ˜μ—ˆμ§€λ§Œ 이후엔 Merge conflictκ°€ λ°œμƒν•œλ‹€λŠ” μ—λŸ¬λ‘œ μ΄μ–΄μ‘Œλ‹€. νŒ€ 레포 κΈ°μ€€μœΌλ‘œ ν•΄μ•Όν•˜λ‹ˆκΉŒ 좩돌이 λ°œμƒν•œλ‹€λ©΄ 우리 레포둜 μ§€μ •ν•΄μ£ΌλŠ” -XoursλΌλŠ” μ˜΅μ…˜κΉŒμ§€ ν•˜λ‚˜ 더 λ°°μ›Œκ°ˆ 수 μžˆμ—ˆλ‹€..

μ •λ¦¬ν•˜μžλ©΄,

  1. Git의 ꡬ쑰 이해:
    • Git은 μƒνƒœλ₯Ό μŠ€λƒ…μƒ·μœΌλ‘œ μ €μž₯ν•˜κ³ , 이 μŠ€λƒ…μƒ·λ“€μ€ 고유의 ν•΄μ‹œ κ°’μœΌλ‘œ κ΅¬λΆ„λ©λ‹ˆλ‹€.
    • 각 컀밋은 λΆ€λͺ¨ 컀밋을 κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό κ°€μ§€κ³  있으며, 이 포인터듀이 μ—°κ²°λ˜μ–΄ Git 트리λ₯Ό ν˜•μ„±ν•©λ‹ˆλ‹€.
    • Git νŠΈλ¦¬λŠ” 이 μ»€λ°‹λ“€μ˜ μ—°κ²°λœ νžˆμŠ€ν† λ¦¬λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
  2. Git νŠΈλ¦¬μ™€ 컀밋 ν•΄μ‹œ:
    • Gitμ—μ„œ 각 컀밋은 κ³ μœ ν•œ ν•΄μ‹œ 값을 κ°€μ§€λ©°, 이 ν•΄μ‹œλŠ” μ»€λ°‹μ˜ λ‚΄μš©κ³Ό λΆ€λͺ¨ 컀밋에 μ˜ν•΄ κ²°μ •λ©λ‹ˆλ‹€. λ™μΌν•œ λ‚΄μš©μ˜ 컀밋이라도 λΆ€λͺ¨ 컀밋이 λ‹€λ₯΄λ©΄ ν•΄μ‹œ 값이 λ‹¬λΌμ§‘λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλ‘œ λ‹€λ₯Έ μ €μž₯μ†Œμ—μ„œ λ™μΌν•œ λ‚΄μš©μ„ μ»€λ°‹ν•˜λ”λΌλ„ λΆ€λͺ¨ 컀밋이 λ‹€λ₯΄λ©΄ μ„œλ‘œ λ‹€λ₯Έ ν•΄μ‹œ 값을 κ°€μ§€κ²Œ λ©λ‹ˆλ‹€.
    • 두 μ €μž₯μ†Œκ°€ λ™μΌν•œ Git 트리λ₯Ό κ°€μ§€λ €λ©΄, 컀밋 내역을 λ™κΈ°ν™”ν•˜μ—¬ λ™μΌν•œ 컀밋 ν•΄μ‹œλ₯Ό μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  3. --allow-unrelated-histories μ˜΅μ…˜:
    • 이 μ˜΅μ…˜μ€ μ„œλ‘œ λ‹€λ₯Έ Git νžˆμŠ€ν† λ¦¬λ₯Ό κ°€μ§„ 두 μ €μž₯μ†Œλ₯Ό 병합할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. 기본적으둜 Git은 μ„œλ‘œ κ΄€λ ¨ μ—†λŠ” νžˆμŠ€ν† λ¦¬λ₯Ό 병합할 λ•Œ κ²½κ³ λ₯Ό ν‘œμ‹œν•˜κ³  병합을 λ§‰μŠ΅λ‹ˆλ‹€. 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 이 μ œν•œμ„ λ¬΄μ‹œν•˜κ³  병합을 κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. Merge 좩돌 ν•΄κ²°:
    • 병합 μ‹œ 좩돌이 λ°œμƒν•˜λŠ” 것은 두 μ €μž₯μ†Œκ°€ λ™μΌν•œ νŒŒμΌμ„ λ‹€λ₯΄κ²Œ μˆ˜μ •ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ΄λ•Œ -Xours μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 좩돌이 λ°œμƒν•œ νŒŒμΌμ— λŒ€ν•΄ ν˜„μž¬ μ²΄ν¬μ•„μ›ƒλœ 브랜치의 λ³€κ²½ 사항을 μš°μ„ μ‹œν•˜μ—¬ μΆ©λŒμ„ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • 이 μ˜΅μ…˜μ€ 좩돌 ν•΄κ²°μ˜ ν•œ λ°©λ²•μ΄μ§€λ§Œ, 항상 λͺ¨λ“  상황에 μ ν•©ν•˜μ§€ μ•Šμ„ 수 μžˆμœΌλ―€λ‘œ μ‹ μ€‘ν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.