git 버전관리

정은경·2021년 4월 6일
0

🧩 Me Today 

목록 보기
35/48

git for teams


Part 1> 워크플로우 작성하기

  • 팀을 위한 워크플로우의 윤곽을 그려야 하는 이들에게 가장 유용한 파트

Chap 1. 팀으로 일하기

  • 무슨 문제건 정치적 문제를 먼저 이해하면 git을 배우고 사용하기가 훨씬 수월해진다.
  • 좋은 기술은 훌륭한 팀에서 나온다. 훌륭한 팀을 만드는 방법에 대해 다룬다

학습목표

  • 팀 내부에서 맡은 역할을 명확히 하기
  • 유용한 결과를 낼 수 있는 회의 구성하기
  • 팀 목표와 다른 방향으로 일하는 이들의 핵심 문제 포착하기
  • 팀 내 공감신뢰를 쌓게 할 전략 적용하기
  • 무엇보다 자신의 팀을 이해하고, 제작할 소프트웨어의 필요사항을 명확히 알아야 한다.

1.1 팀원들

  • 개발할 때마다 우리는 사용자를 위해 어떤 문제를 해결해야 하는가, 즉 말그대로 사용자의 경험에서부터 시작해야 한다.
  • 테스트 주도 개발을 할 때는 먼저 합격 테스트를 작성해 언제 문제가 해결됐는지 확인할 수 있어야한다.
  • 테스트 과정에 보안 검수 과정은 반드시 들어가야 한다.
  • 소프트웨어 배포를 결정한 권한이 없는 경우, 가능한 한 빠리 그 권한을 가진 운영 팀을 개발에 참여시켜야 한다.
  • 개발을 진행하면서 오픈소스 소프트웨어를 사용할 예정이라면, 해당 소프트웨어를 만든 커뮤니티와 친밀한 관계를 만드는 것이 좋다.
  • 부서끼리 격리된 큰 회사에서 부서 간 협업을 늘리면, 기껏 만든 코드가 적용되지 않고 노는 시간을 줄일 수 있다.
  • 마지막으로 자신의 팀 내부를 살펴봐야 한다. 기술 설계자는 솔루션이 어떤 식으로 구현될 것인가를 계획할 책임이 있다.
  • 합의 지향 개발(Comsensus-driven development)은 작은 내부 프로젝트에서 가장 효과적이지만, 다른 프로젝트에서라도 협력할 수 있다면 노력하지 않을 이유가 없다.
  • 개발자들이 스스로 할 일을 선택하면, 자주성이 높아지고 지겨워진 업무에서 벗어나는 효과도 있다. 물론, 어떤 이들은 그냥 업무를 배정해주길 선호하기도 한다.
  • 모든 팀과 모든 프로젝트에 딱 맞는 하나의 올바른 방법 같은 것은 없다. 의욕적이고 응집력 있는 팀을 만드는 방법은 팀의 모든 이들을 존중하고 가능한 한 그들의 선호에 따라 개발 과정을 최적화하는 것이다.

1.2 사고 전략

  • 일에 '올바른 방식'은 없다. 각각의 차이를 수용할 수 있다면 팀은 더 건강해질 것이다. 개별 팀원을 생산적으로 만들 전략을 공유할 수만 있다면 말이다.
  • 사고: 창조적 사고, 이해하는 사고, 결정하는 사고
  • 네 번째 차원인 개인의 정신은 개인이 무엇에 흥미가 있는가를 확인하기 위한 부분이다.
  • 개인이 특정한 사고 전략을 고집하면 팀은 빠르게 무너질 수 있다.

1.3 팀 회의

  • 프로젝트와 프로젝트의 각각 구성 요소에는 시작, 활동, 결과가 있어야 한다.
  • 회의를 준비할 때는 "시작, 진행, 결론" 패턴을 기억해야한다. 이 세 가지는 가장 분명해야한다.
  • 회의 전에 미리 회의의 목표를 확인하는 것은 문제를 파악하기 위해 자유로운 토론시간을 갖는 것만큼이나 기본적인 것이다.

1.3.1 시작

  • 공통 시작회의에는 모든 팀원을 참가시키는 것이 좋다
  • 대면하는 것이 가장 좋다

1.3.2 진척 상황 추적

  • 팀 내 소통을 많이 하는 것은 훌륭한 습관이지만, 그렇다고 회의하는 데만 시간을 낭비해서는 안된다.
  • 회의에는 아주 구체적인 목적을 가지고 해야한다.
  • 스프린트는 일하면 작업을 진행하는 일정한 속도 또는 흐름을 얻기 위한 노력이다.
    • 스프린트 계획하기
    • 일정 회의: 매주 여러 차례 같은 시간에 진행돼야 한다. 일정 회의에서 팀원들은 자신의 작업에 관한 "약속"을 결과물로 내야 한다. "다음 일정 회의까지 제출할 부분이 무엇인가"까지 답해야한다.
    • 프로젝트 딥다이브: 일정회의보다 깊은 토론이 필요하면, 후속 딥다이브 회의를 해야한다.
    • 스프린트 데모: 매주 한 번은 팀이 함께 모여 작업 현황을 서로에게 보여줄 기회를 가져야 한다.
    • 스프린트 회고: 과정에서 잘 되는 것들과 개선할 수 있는 부분을 확인한다.(무엇을 원하는가, 무엇이 필요한가, 무엇이 의문스러운가)
    • 전사적 스탠드업
    • 일대일

1.3.3 공감대 구축하기

  • 팀 내 신뢰와 두터운 관계를 형성하려면 매우 의식적인 노력이 필요하다.
  • 팀 내 공감대를 넓히는 첫걸음은 같이 일하는 사람들에 대해 충분히 관심을 가지는 것이다.
    • 이야기 수직하기
    • 의식적으로 듣기
    • 되묻기

1.3.4 결과와 회고

  • 결과 회의와 회고 회의는 프로젝트의 잘된 점과 개선할 점이 무엇인지 토론하기에 적격이다.
  • 한 프로젝트를 끝내는 마무리 모임에서는 부끄러워하거나 비난하는 일 없이 사람들이 잘 안된 일들에 대해 말할 수 있어야 한다.
  • 회고 회의에서 향후 주의해야 할 사항들의 패턴을 확인하려 한다.
  • 회의에서 우리가 던졌던 질문을 바꿔 그 당시 얻었떤 정보보다 낭느 정보를 얻는 방법을 찾으려는 것
  • 버전 관리라는 관점에서 볼 때, 프로젝트가 끝나면 프로젝트에서 가장 좋았던 것들을 찾고 어떻게 그것들을 만들 수 있었는지를 문서화로 만들 수 있다.

1.4 팀 작업 관련 Git 용어

  • 클론 생성/포킹(forking)
  • 오직 프로젝트 거버넌스를 통해서만 프로젝트의 가장 중요한 저장소 버전이 결정된다.
  • 업스트림(upstream): 소프트웨어 제품의 공식 버전을 현재 저장소의 업스트림이라고 부름
  • pull은 중앙 저장소의 새로운 수정사항을 가져오는 fetch 기능을 수행하고, 그다음 가져온 수정사항을 track된 local branch 사본에 병합하는 merge 기능을 수행한다

1.5 요약

  • 서로 신뢰하고 공감하는 팀일수록 동료들끼리 작업에 필요한 git 명령어를 적절히 사용한다
  • 특정한 사고 전략을 편애하면 작업이 산으로 갈 수 있다. 올바른 사고 전략이 올바른 상황에서 사용되도록 해야 문제를 줄이고, 작업을 더 빠르고 더 재미있게 진행할 수 있다
  • 자신의 작업을 투명하게 공개하고 중요한 시기에 관련 이해당사자를 팀에 포함하면 코드 테스트 시간과 버그 숫자를 줄여 소프트웨어를 더 빠르게 배포할 수 있다

Chap 2. 지시통제

  • 진행 중인 프로젝트의 예상 가능한 문제에 일찍부터 대비하라.
  • git 저장소의 접근 권한 허가/거부를 결정하는 다양한 종류의 승인 방법에 대해 배울 것

    학습목표:

  • 저자, 저작권, 유통 라이선스
  • 프로젝트에 기여 풍조를 정하는 리더십 모델
  • 기여자들이 따라야 하는 가이드라인을 제시하는 행동 수칙
  • 분산 기여자
  • 공동 기여자 저장소
  • 분사 유지 보수

2.1 프로젝트 거버넌스

Chap 3. 브랜치 전략

  • 팀이 진행하고 있는 개별 아이디어를 어떻게 브랜치를 이용하여 분리하는지 보일 것 (브랜칭 전략)

Chap 4. 효과적인 워크플로우

  • 오늘 작성하는 문서는 내일의 작업을 더 효율적으로 만들어야 한다.
  • 자신만의 문서 작성법과 간단한 소프트웨어 상품 제작 및 배포 방법을 배울 것

Part 2> 워크플로우에 명령어 적용하기

  • 개발자들에게 가장 유용한 파트
  • git의 명령어가 실제로 어떻게 작동하는지 배울 것

Chap 5. 1인 팀

  • 실질 기술의 기초를 다지자
  • 분산 버전 관리의 기본을 다룸
  • 저장소 생성, 커밋, 브랜치, 태그를 이용하여 로컬에서 파일 변경사항 추적하는 방법

Chap 6. 롤백, 리버트, 리셋, 리베이스

  • 실수를 만회하는 법을 배우자
  • 히스토리 수정에 대해 다룸
  • 커밋 수정, 타임라인의 커밋 삭제, 작업 리베이스

Chap 7. 1인 이상의 팀

  • 팀의 문호를 열자
  • 로컬 저장소 히스토리의 주인은 자신이다
  • 과거의 변경점을 추적하고, 공유 저장소에 코드를 올리고, 로컬 저장소에 다른 사람들의 업데이트 내용을 적용하는 법을 학습

Chap 8. 검토 준비하기

  • 동료 간 검토를 통해 좋은 작업의 결과물과 책임을 공유하자
  • 팀 내 코드 검토를 진행하는 방식에 대해 배울 것
  • 공통의 검토 방법론을 위한 명령어를 다루고, 자신의 팀에 맞게 커스터마이징하는 방법에 대해서도 제안할 것

Chap 9. 버그를 찾고 수성하기

  • Git을 이용해서 버그를 찾아내는 고급 기술 몇 가지를 배울 것

Part 3> Git 호스팅

  • 현재(책 출간시점이 2016년) 시중에 나온 유명 코드 호스팅 시스템 사용법을 배울 것

Chap 10. GitHub의 오픈소스 프로젝트

  • 공개 공동작업을 통해 커뮤니티를 활성화시키자

Chap 11. Bitbucket에서 비공개 팀 작업

  • 좋은 코드를 작성하려면, 하나의 팀은 자신들만의 저장소를 가져야한다.

Chap 12. GitLab을 통해 자체 호스팅하는 협업

  • 가끔은 높은 담장이 이웃관계를 더 돈독하게 한다.
  • GitLab을 통해 자신만의 인스턴스를 호스트하고 이를 통해 프로젝트를 진행하는 방법을 배울 것
  • 방화벽을 사용 중이라 인터넷으로 공개 저장소에 접근할 수 없는 개발자들에게는 특히 유용할 것

Reference

  • 엠마, git for teams
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글