Yarn: gitμ—μ„œ yarn.lock을 λ°”μ΄λ„ˆλ¦¬ 파일둜 μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

에 λ§Œλ“  2016λ…„ 11μ›” 10일  Β·  19μ½”λ©˜νŠΈ  Β·  좜처: yarnpkg/yarn

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ§€κΈˆκΉŒμ§€ λ‚˜λ₯Ό μœ„ν•΄ μΌν•œ μ ‘κ·Ό 방식은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

git rebase origin/master

첫 번째 좩돌이 λ°œμƒν•˜λ©΄ yarn.lock λ₯Ό ν™•μΈν•œ λ‹€μŒ μ„€μΉ˜λ₯Ό λ‹€μ‹œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

git checkout origin/master -- yarn.lock
yarn install

이 μƒμ„±ν•˜λŠ” μƒˆλ‘œμš΄ yarn.lock 원산지 / λ§ˆμŠ€ν„°μ˜ 버전에 따라 yarn.lock 내에 λŒ€ν•œ λ³€κ²½ 사항을 ν¬ν•¨ν•˜λ˜ package.json . κ·Έλ ‡λ‹€λ©΄ λ‹€μŒ 문제일 λΏμž…λ‹ˆλ‹€.

git add yarn.lock
git rebase --continue

그리고 λ‹€μ‹œ 사업을 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  19 λŒ“κΈ€

μ•„λ‹ˆ, 그러면 μ•ˆλ©λ‹ˆλ‹€. νŒŒμΌμ€ 일반 ν…μŠ€νŠΈμ΄λ©° ν•΄κ²°ν•΄μ•Ό ν•  수 μžˆλŠ” 병합 좩돌이 νŒŒμΌμ— μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ„œ μ—λŠ” 문제λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ yarn.lock νŒŒμΌμ„ κ±΄λ“œλ¦¬μ§€ μ•Šμ•„μ•Ό ν•˜λ©°, yarn μžμ²΄μ—μ„œλ§Œ μ²˜λ¦¬ν•΄μ•Ό ν•œλ‹€κ³  κΈ°λ‘λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 그러면 병합 μΆ©λŒμ„ μ–΄λ–»κ²Œ ν•΄κ²°ν•©λ‹ˆκΉŒ?

@kittens λŠ” 잠금 νŒŒμΌμ„ λ‚ λ € 버리고 원사λ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•˜λŠ” μΆ©λŒμ΄μžˆμ„ λ•Œν•΄μ•Ό ν•  μ˜³μ€ μΌμž…λ‹ˆκΉŒ? 당신이 ν•„μš”λ‘œ ν•˜λŠ” 것을 얻을 것 κ°™μŠ΅λ‹ˆκΉŒ?

@dbashford 날렀버리고 원사λ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•˜λŠ” λ¬Έμ œλŠ” μ›ν•˜λŠ” 것보닀 더 λ§Žμ€ λ³€κ²½ 사항을 얻을 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ yarn upgrade μ‹€ν–‰ν•˜μ§€ μ•Šμ•˜λ”λΌλ„ λ¬Όκ²°ν‘œ 버전이 μ—…κ·Έλ ˆμ΄λ“œλ©λ‹ˆλ‹€.

@dbashford 그러면 원사λ₯Ό λ„£λŠ” 것이 더 μ‰½μŠ΅λ‹ˆλ‹€. gitignoreμ—μ„œ 파일 잠금

μ§€κΈˆκΉŒμ§€ λ‚˜λ₯Ό μœ„ν•΄ μΌν•œ μ ‘κ·Ό 방식은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

git rebase origin/master

첫 번째 좩돌이 λ°œμƒν•˜λ©΄ yarn.lock λ₯Ό ν™•μΈν•œ λ‹€μŒ μ„€μΉ˜λ₯Ό λ‹€μ‹œ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

git checkout origin/master -- yarn.lock
yarn install

이 μƒμ„±ν•˜λŠ” μƒˆλ‘œμš΄ yarn.lock 원산지 / λ§ˆμŠ€ν„°μ˜ 버전에 따라 yarn.lock 내에 λŒ€ν•œ λ³€κ²½ 사항을 ν¬ν•¨ν•˜λ˜ package.json . κ·Έλ ‡λ‹€λ©΄ λ‹€μŒ 문제일 λΏμž…λ‹ˆλ‹€.

git add yarn.lock
git rebase --continue

그리고 λ‹€μ‹œ 사업을 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

병합 μΆ©λŒμ„ μˆ˜λ™μœΌλ‘œ ν•΄κ²°ν•˜μ§€ μ•Šλ”λΌλ„ 이 파일이 이진 파일이 μ•„λ‹ˆλΌλŠ” 것은 μ—¬μ „νžˆ β€‹β€‹μ€‘μš”ν•œ 정보인 병합 μΆ©λŒμ„ λ³Ό 수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

κ΄€λ ¨ν•˜μ—¬ 병합 좩돌이 _no_ μžˆλ”λΌλ„ git이 두 가지 λ²„μ „μ˜ yarn.lock νŒŒμΌμ„ λ³‘ν•©ν•˜μ—¬ μœ νš¨ν•œ/μ˜¬λ°”λ₯Έ νŒŒμΌμ„ μƒμ„±ν•œλ‹€κ³  항상 κ°€μ •ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? yarn이 파일의 λ‚΄μš©μ„ 관리해야 ν•˜λŠ” μœ μΌν•œ 도ꡬ인 경우 git이 파일의 λ‚΄μš©μ„ μ—…λ°μ΄νŠΈν•˜λ„λ‘ ν•˜λŠ” 것은 잘λͺ»λœ 것 κ°™μŠ΅λ‹ˆλ‹€.

특히 λ‹€μŒκ³Ό 같이 YAML을 μžλ™ λ³‘ν•©ν•˜λ©΄ 항상 μœ νš¨ν•œ 파일이 μƒμ„±λ˜λŠ”μ§€ ν™•μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

  • 잠금 νŒŒμΌμ—μ„œ μ„œλ‘œ λ°”λ‘œ μ˜†μ— μžˆλŠ” νŒ¨ν‚€μ§€μ˜ μ—¬λŸ¬ μ£Όμš” 버전
  • 두 개의 μΈμ ‘ν•œ ν•­λͺ©μ˜ 첫 번째 쀄은 κ°™κ±°λ‚˜ μœ μ‚¬ν•œ λ²„μ „μœΌλ‘œ ν™•μΈν•˜λ©΄μ„œ λ™μ‹œμ— 변경될 수 μžˆμŠ΅λ‹ˆλ‹€.
readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2:
  version "2.2.2"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
  dependencies:
    buffer-shims "^1.0.0"
    core-util-is "~1.0.0"
    inherits "~2.0.1"
    isarray "~1.0.0"
    process-nextick-args "~1.0.6"
    string_decoder "~0.10.x"
    util-deprecate "~1.0.1"

readable-stream@~2.1.4:
  version "2.1.5"
  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
  dependencies:
    buffer-shims "^1.0.0"
    core-util-is "~1.0.0"
    inherits "~2.0.1"
    isarray "~1.0.0"
    process-nextick-args "~1.0.6"
    string_decoder "~0.10.x"
    util-deprecate "~1.0.1"

@IanVS μ—°μŠ΅ @idris 의 μš°λ €λŠ” μ—¬μ „νžˆ 이 μ†”λ£¨μ…˜μ— μ μš©λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ°©μ‹μœΌλ‘œ λ§Žμ€ 쒅속성을 μ—…κ·Έλ ˆμ΄λ“œν•˜κ²Œ 되며 μ΄λŠ” μ˜ˆμƒμΉ˜ λͺ»ν•œ 결과일 수 μžˆμŠ΅λ‹ˆλ‹€.

@danny-andrews μ–΄λ–»κ²Œ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

당신은 μ“Έμ–΄ λ•Œ yarn.lock λ‹€μ‹œ μ‹€ν–‰ yarn install , 전체 yarn.lock 버전이에 μ§€μ •λœ λ²”μœ„λ₯Ό 만쑱 μ˜μ‘΄μ„±μ˜ μ΅œμ‹  λ²„μ „μœΌλ‘œ 재 κ΅¬μΆ•λ©λ‹ˆλ‹€ package.json 효과적으둜 yarn install λ§ˆμ§€λ§‰ μ‹€ν–‰ 이후 λ³€κ²½λœ 쒅속성을 μ—…κ·Έλ ˆμ΄λ“œν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ yarn.lock λ₯Ό μ‚­μ œν•˜λŠ” λŒ€μ‹  git checkout origin/master -- yarn.lock μ œμ•ˆν–ˆμŠ΅λ‹ˆλ‹€. 즉, κ·€ν•˜μ˜ μž¬μ„€μ • yarn.lock 수 μžˆλ„λ‘ λ§ˆμŠ€ν„°μ˜ 버전에 yarn install λ‹Ήμ‹ μ˜ λ³€κ²½λœ νŒ¨ν‚€μ§€ 만 μ—…λ°μ΄νŠΈν•˜λŠ” package.json (λ¬Όλ‘  κ·Έλ“€μ˜ ν•˜μœ„ depsλ₯Ό) .

@IanVS 예, μ˜¬λ°”λ₯Έ λ°©λ²•μž…λ‹ˆλ‹€.

git checkout -- yarn.lock 더 일반적이고 ν˜„μž¬ 뢄기에 μ»€λ°‹λœ ν•­λͺ©μœΌλ‘œ μž¬μ„€μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

쒋은 μ§€μ μž…λ‹ˆλ‹€, @idris. λ‚˜λŠ” 일반적으둜 μœ„μ—μ„œ μ‚¬μš©ν•œ 예인 λ§ˆμŠ€ν„°λ₯Ό 기반으둜 ν•˜μ§€λ§Œ 항상 그런 것은 μ•„λ‹™λ‹ˆλ‹€.

@IanVS κ·Έ λͺ…령이 λ¬΄μ—‡μ„ν–ˆλŠ”μ§€ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ ν•΄μ™”λ˜ κ²ƒμ²˜λŸΌ yarn.lock μˆ˜λ™μœΌλ‘œ λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£λŠ” 것보닀 훨씬 λ‚«μŠ΅λ‹ˆλ‹€. κ³΅μœ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

이것은 관련이 μžˆμŠ΅λ‹ˆλ‹€: #3544

@IanVS 의 μ ‘κ·Ό 방식은 잠금 파일이 λ°”μ΄λ„ˆλ¦¬ 파일이 λ˜λ„λ‘ ν•˜λŠ” 것과 ν˜Έν™˜λ˜μ§€ yarn.lock κ°€ μžˆλŠ” 것 μœ„μ— yarn install λ₯Ό μž¬μƒν•˜μ‹­μ‹œμ˜€.

여기에 bash 슀크립트λ₯Ό μΆ”κ°€ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

#!/usr/bin/env bash
export GIT_TRACE=1
git checkout origin/master -- Pipfile.lock Pipfile
git commit -m "fetch to branch Pipfile.lock, Pipfile from origin/master" -- Pipfile.lock Pipfile
read  -n 1 -p "Do your changes in Pipfile and press Enter ..."
pipenv lock --clear
git commit -m "re-apply changes to Pipfile.lock, Pipfile" -- Pipfile.lock Pipfile
echo "Done"

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰