SlideShare a Scribd company logo
1 of 18
고급 Git과 브랜치 전략,
그리고 히스토리 최적화
2020.04.25
Speaker :김주석 (@ggaengma)
Sub : 원기태
Follow : 전고은
Topic
열심히 개발자로 살아왔지만 귀찮아서 대충 알고 쓰거나 그냥 넘어갔던 "중요한 것"들에 대한 스터디
- Topic : 정규식
Title "언제까지 복사해서 붙여넣을거에요?"
(Speaker:원기태 / Sub:전고은 / Follow:윤명환)
- Topic : SQL
Title "Query plan"
(Speaker:윤명환 / Sub:서승재 / Follow:원기태)
- Topic : AWS
Title "AWS에는 EC2만 있는게 아니라니까"
(Speaker:서승재 / Sub:윤명환 / Follow:김주석)
- Topic : Git
Title "고급 Git과 브랜치 전략, 그리고 히스토리 최적화"
(Speaker:김주석 / Sub:원기태 / Follow:전고은)
- Topic : Shell
Title "효율적인 Shell script와 텍스트 에디팅"
(Speaker:전고은 / Sub:김주석 / Follow:서승재)
오늘 우리는...
아는 것 vs 잘 아는 것 vs 잘 활용하는 것
운전을 하는 방법(technical)을 아는 것 vs 운전을 잘 하는 것(knowhow)
- 보통의 개발자는…
- init, clone, commit, pull, push, merge, add, branch, checkout,...
- ------------------------------------------------------------------------------------------------------
- 좀 더 잘하고 싶은 개발자는…
- fetch, log, revert, cherry-pick, diff, rebase, tag, …
- ------------------------------------------------------------------------------------------------------
- 제대로 활용하는 개발자는…
- git branch 모델
뭣이 중한디?
- 좀 더 고급지게 알면, 그 자체로 의미는 OK
-> 다양한 상황이나 환경에서 문제를 해결할 수 있으니까!
- 근데 운전을 하는 법 <<< 운전을 잘 하는법
- Git을 사용하는 법 <<< Git을 잘 활용 하는 것
필요한 건 시간, 그리고 습관
- branch의 사전적 의미 = (나무 등의)가지
- 가지를 뻗어나가자!
- … 근데 그러다보면 가지가 산만해서 가지치기(rebase)가 필요!
- 어떤 줄기의 기원은 A줄기이고, A줄기의 원래 줄기는 B이고… 결국 뿌리 (root)
는 하나인데..?
- 개발 언어에 framework가 있다면, Git에는 Branch전략(model)!
- 공통 규약이자 신뢰의 약속
- 개발과 배포의 효율성, 그리고 자동화
- 코드리뷰(Online and Offline)가 없다면, 전략도 자동화도 쓸모 아리마생
다짜고짜 고급진 두 가지 전략 - 첫번째
- 첫번째, 배포할 것을 merge (병합해서)해서 배포하기
- 배포 담당자의 역할 감소
- 상대적으로 단순한 모델
- 오랜 전통(?)을 지닌 Branch 전략
- “제외시키고 나가기”에 어려움
- REF. http://hundredin.net/2014/04/06/a-successful-git-branching-model/
다짜고짜 고급진 두 가지 전략 - 첫번째
다짜고짜 고급진 두 가지 전략 - 두번째
- 두번째, 배포할 것을 cherry-pick(당겨다가) 배포하기
- 배포 담당자가 바쁨(배포날은 이것만 한다!…)
- 첫번째 전략보다 상대적으로 복잡
- 현재(아직까지는) Google의 Branch 전략 (그럼 묻따않 채택?!?!?)
- 확실히 배포될 것들로만 이루어지기에 제외시키고 나갈 필요 없음
다짜고짜 고급진 두 가지 전략 - 두번째
코드 리뷰는 어떻게…?
- 아, 개발하기도 바빠 죽겠는데...
- 코드리뷰 = 운동
- 시간이 나면 하는 게 아니라, 시간을 내서 해야하는 것
- 기본은 Online으로 Merge Request, Pull Request
- 너무나도 복잡하거나 너무나도 중요해서 설명이 필요하면, Offline 코드 리뷰
- 공통적인 코딩 컨벤션이 반드시 필요 (시간 낭비 이슈 최소화)
- (걱정마...구글이 있어) https://google.github.io/styleguide/javaguide.html
- 글로벌, 그리고 국내 Top IT기업에서 코드 리뷰를 하지 않는 개발조직은, 단 한
곳도 없음! (찾으면 500원)
Github, Bitbucket, Gitlab
- git 그 자체가 아니고 대한 저장소에 대한 서비스
- 대표주자 삼총사. github VS bitbutcket VS gitlab
- 비싸지만 좋고 그 자체가 표준에 가까워(교과서) VS 더 비싸고 더 좋고 사용자
친화적이고 편리하고 연동하기 좋아(전과) VS 싸고 괜찮고 어지간한건 다 있
어(제본)
- 시작은? Gitlab
- 무료 CI/CD 경험! 무료 Hook 경험! Snippet까지! Issue! 무료! 무료! 무료!...
- 근데... 느려… 뻗어…
- 그런 상황이 왔을 때, 유료를 고민해도 늦지 않다!
- Bitbucket의 Lock-in을 감당하기 어려울수도… (feat. JIRA)
Gitlab에서의 코드 리뷰
Gitlab에서의 코드 리뷰
역사를 잊은 민족에게 미래는 없다
- 역사(history)를 잊은(관리하지 않은) 민족(개발조직)에게 미래(보다 나은 개발
환경)는 없다! 형상관리의 당위성
- Commit은 반드시 기능 단위로! 왜? 그래야 알아보니까
- burning 하다가 commit을 잊었다면?
- 선택(add)하여 commit! (git add -p === git status + git diff + git add)
- 일하는데 갑자기 이거 먼저 해달라는 군주의 부탁?
- 빼뒀다가(stash) commit하고, 꺼내오기(pop)
- 기능까지는 아닌데 commit이 필요하다면?
- 의미가 필요하지 않은 commit history를 정제(rebase)
- 다중 remote 가 필요한 시점? -> 폐쇄된 저장소에서 사용
Git stash, pop
- 임시 저장
- 저장은 stash
- 꺼내올 땐 pop
merge VS rebase
- 원래 git은 3-way-merge 방식 (나, 너, 그리고 조상)
- 코드가 합쳐지는 과정은 merge이거나 rebase 두 가지
- 정답은 없지만 모든 히스토리 우선? merge. 최적화? rebase
- remote에 push된 commit은 rebase를 하지 않는 것이 관례
Git rebase : 과정을 알아야 고오급
git checkout feature git rebase master
head가 master로 변경
백문이 불여일타
- 글씨로 쓰기 힘드니까 말과 노트북으로 떼워보는 시간

More Related Content

Similar to 고급 Git과 브랜치 전략 그리고 히스토리 최적화

100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning Systemhoondong kim
 
Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?Suho Lee
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
[코세나, kosena] 생성AI 프로젝트와 사례
[코세나, kosena] 생성AI 프로젝트와 사례[코세나, kosena] 생성AI 프로젝트와 사례
[코세나, kosena] 생성AI 프로젝트와 사례kosena
 
git, git flow
git, git flowgit, git flow
git, git floweva
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용Ian Choi
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Jinsoo Jung
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개Jong-il Seok
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Sa-ryong Kang
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기Jae Sung Park
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기NAVER D2
 
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조Jay Park
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjsJae Sung Park
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다KWON JUNHYEOK
 

Similar to 고급 Git과 브랜치 전략 그리고 히스토리 최적화 (20)

100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System
 
Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?Github? linux? 이건 뭐지?
Github? linux? 이건 뭐지?
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
[코세나, kosena] 생성AI 프로젝트와 사례
[코세나, kosena] 생성AI 프로젝트와 사례[코세나, kosena] 생성AI 프로젝트와 사례
[코세나, kosena] 생성AI 프로젝트와 사례
 
git, git flow
git, git flowgit, git flow
git, git flow
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용[201808] GitHub 사용하기 - GIt & 협업 활용
[201808] GitHub 사용하기 - GIt & 협업 활용
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
 
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
Droid knights 2019 - (Large-scale App을 위한) Android Architecture 총정리
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
 
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조
(알도개) 무한 루프에 빠진 개발자 논쟁 시리즈: 1편 알고리즘과 자료 구조
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
[Devil's camp 2019] 혹시 Elixir 아십니까? 정.말.갓.언.어.입.니.다
 

고급 Git과 브랜치 전략 그리고 히스토리 최적화

  • 1. 고급 Git과 브랜치 전략, 그리고 히스토리 최적화 2020.04.25 Speaker :김주석 (@ggaengma) Sub : 원기태 Follow : 전고은
  • 2. Topic 열심히 개발자로 살아왔지만 귀찮아서 대충 알고 쓰거나 그냥 넘어갔던 "중요한 것"들에 대한 스터디 - Topic : 정규식 Title "언제까지 복사해서 붙여넣을거에요?" (Speaker:원기태 / Sub:전고은 / Follow:윤명환) - Topic : SQL Title "Query plan" (Speaker:윤명환 / Sub:서승재 / Follow:원기태) - Topic : AWS Title "AWS에는 EC2만 있는게 아니라니까" (Speaker:서승재 / Sub:윤명환 / Follow:김주석) - Topic : Git Title "고급 Git과 브랜치 전략, 그리고 히스토리 최적화" (Speaker:김주석 / Sub:원기태 / Follow:전고은) - Topic : Shell Title "효율적인 Shell script와 텍스트 에디팅" (Speaker:전고은 / Sub:김주석 / Follow:서승재) 오늘 우리는...
  • 3. 아는 것 vs 잘 아는 것 vs 잘 활용하는 것 운전을 하는 방법(technical)을 아는 것 vs 운전을 잘 하는 것(knowhow) - 보통의 개발자는… - init, clone, commit, pull, push, merge, add, branch, checkout,... - ------------------------------------------------------------------------------------------------------ - 좀 더 잘하고 싶은 개발자는… - fetch, log, revert, cherry-pick, diff, rebase, tag, … - ------------------------------------------------------------------------------------------------------ - 제대로 활용하는 개발자는… - git branch 모델
  • 4. 뭣이 중한디? - 좀 더 고급지게 알면, 그 자체로 의미는 OK -> 다양한 상황이나 환경에서 문제를 해결할 수 있으니까! - 근데 운전을 하는 법 <<< 운전을 잘 하는법 - Git을 사용하는 법 <<< Git을 잘 활용 하는 것
  • 5. 필요한 건 시간, 그리고 습관 - branch의 사전적 의미 = (나무 등의)가지 - 가지를 뻗어나가자! - … 근데 그러다보면 가지가 산만해서 가지치기(rebase)가 필요! - 어떤 줄기의 기원은 A줄기이고, A줄기의 원래 줄기는 B이고… 결국 뿌리 (root) 는 하나인데..? - 개발 언어에 framework가 있다면, Git에는 Branch전략(model)! - 공통 규약이자 신뢰의 약속 - 개발과 배포의 효율성, 그리고 자동화 - 코드리뷰(Online and Offline)가 없다면, 전략도 자동화도 쓸모 아리마생
  • 6. 다짜고짜 고급진 두 가지 전략 - 첫번째 - 첫번째, 배포할 것을 merge (병합해서)해서 배포하기 - 배포 담당자의 역할 감소 - 상대적으로 단순한 모델 - 오랜 전통(?)을 지닌 Branch 전략 - “제외시키고 나가기”에 어려움 - REF. http://hundredin.net/2014/04/06/a-successful-git-branching-model/
  • 7. 다짜고짜 고급진 두 가지 전략 - 첫번째
  • 8. 다짜고짜 고급진 두 가지 전략 - 두번째 - 두번째, 배포할 것을 cherry-pick(당겨다가) 배포하기 - 배포 담당자가 바쁨(배포날은 이것만 한다!…) - 첫번째 전략보다 상대적으로 복잡 - 현재(아직까지는) Google의 Branch 전략 (그럼 묻따않 채택?!?!?) - 확실히 배포될 것들로만 이루어지기에 제외시키고 나갈 필요 없음
  • 9. 다짜고짜 고급진 두 가지 전략 - 두번째
  • 10. 코드 리뷰는 어떻게…? - 아, 개발하기도 바빠 죽겠는데... - 코드리뷰 = 운동 - 시간이 나면 하는 게 아니라, 시간을 내서 해야하는 것 - 기본은 Online으로 Merge Request, Pull Request - 너무나도 복잡하거나 너무나도 중요해서 설명이 필요하면, Offline 코드 리뷰 - 공통적인 코딩 컨벤션이 반드시 필요 (시간 낭비 이슈 최소화) - (걱정마...구글이 있어) https://google.github.io/styleguide/javaguide.html - 글로벌, 그리고 국내 Top IT기업에서 코드 리뷰를 하지 않는 개발조직은, 단 한 곳도 없음! (찾으면 500원)
  • 11. Github, Bitbucket, Gitlab - git 그 자체가 아니고 대한 저장소에 대한 서비스 - 대표주자 삼총사. github VS bitbutcket VS gitlab - 비싸지만 좋고 그 자체가 표준에 가까워(교과서) VS 더 비싸고 더 좋고 사용자 친화적이고 편리하고 연동하기 좋아(전과) VS 싸고 괜찮고 어지간한건 다 있 어(제본) - 시작은? Gitlab - 무료 CI/CD 경험! 무료 Hook 경험! Snippet까지! Issue! 무료! 무료! 무료!... - 근데... 느려… 뻗어… - 그런 상황이 왔을 때, 유료를 고민해도 늦지 않다! - Bitbucket의 Lock-in을 감당하기 어려울수도… (feat. JIRA)
  • 14. 역사를 잊은 민족에게 미래는 없다 - 역사(history)를 잊은(관리하지 않은) 민족(개발조직)에게 미래(보다 나은 개발 환경)는 없다! 형상관리의 당위성 - Commit은 반드시 기능 단위로! 왜? 그래야 알아보니까 - burning 하다가 commit을 잊었다면? - 선택(add)하여 commit! (git add -p === git status + git diff + git add) - 일하는데 갑자기 이거 먼저 해달라는 군주의 부탁? - 빼뒀다가(stash) commit하고, 꺼내오기(pop) - 기능까지는 아닌데 commit이 필요하다면? - 의미가 필요하지 않은 commit history를 정제(rebase) - 다중 remote 가 필요한 시점? -> 폐쇄된 저장소에서 사용
  • 15. Git stash, pop - 임시 저장 - 저장은 stash - 꺼내올 땐 pop
  • 16. merge VS rebase - 원래 git은 3-way-merge 방식 (나, 너, 그리고 조상) - 코드가 합쳐지는 과정은 merge이거나 rebase 두 가지 - 정답은 없지만 모든 히스토리 우선? merge. 최적화? rebase - remote에 push된 commit은 rebase를 하지 않는 것이 관례
  • 17. Git rebase : 과정을 알아야 고오급 git checkout feature git rebase master head가 master로 변경
  • 18. 백문이 불여일타 - 글씨로 쓰기 힘드니까 말과 노트북으로 떼워보는 시간