Git과 협업 문화를 ARABOZA

DISCLAIMER

뇌피셜과 개인적인 의견이 다량 함유되어 있는 발표입니다.

Table of Contents

1. 이병 김공군: 으케했노...

2. 이 집 버전관리 잘하네~

3. 절.대.깃.헙.해

4. ???: 아... 이건 좀...

Daily Life in 개발대 is like...

@Controller
@RequestMapping(value = "/test")
public class TestController {
 
    @GetMapping
    public ModelAndView getTestData() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("welcome");
        mv.getModel().put("data", "Welcome home man");
        ...
        // 나도 여기는 어떻게 해야할지 모르겠다... 후임아 부탁한다.
        ...
        // 이 파트는 다른 변수랑 이렇게 저렇게 하면 되지 않을까? 
        // 모르겠다...
        return mv;
    }
}
function sosokIntraRlSosokUro() {
    // 소속 인트라를 소속으로
    ...
    return something.SoSok
}

아니 그럼 어떻게 해야하는데

  • 주석으로 이슈 남겨놓기 -> issue tracker
  • 반디집 빌런 -> Git 쓰자 Git...
  • 뭘 하는지 1도 모르겠는 함수/클래스 -> 직관적인 주석
/**
 * @description Set sosok field to object Something
 * @param {string} sosok
 * @type void
 */
function setSosokToSomething(sosok) {
    ...
}
Issue Number Issue Name Description Status
#1 Naming to English 한글 네이밍을 영어 네이밍으로 교체 진행중
#2 Carousel CSS Bug Carousel CSS 애니메이션 오류 완료
(commit number)
... ... ... ...

WHY GIT?

CUZ ISSA THE BEST THING I KNOW

협업 최적화

  - 원하는 버전의 코드를 불러올 수 있다

  - 프로젝트를 논리적/기능적 단위로 나눌 수 있음

  - (인터넷 한정) 다른 사람의 저장소에 컨트리뷰션할 수 있음

  - 코드리뷰하기 쉽다

개인 프로젝트 최적화

  - 오프라인에서도 이용가능

  - 커밋 메시지로 진행 상황 저장

git 용어 정리

local/remote: 사무실 컴퓨터/scm

 

staging: 자~이제부터 저장해볼까~

 

commit: 하번 5분전까지 한 코드 수정사항

 

push: 수정한 거 저장소(scm)에 올리기

 

 

pull: 최신 버전 코드 가져오기

 

branch: 새로운 기능 시험을 위한 카피본

 

git add <directory|file...>
git commit [options] [args]
git push <remote> <local>
git pull <remote> <local>
default local: master, remote: origin
#생성
git checkout -b <branch_name>
#보기
git branch
#삭제
git branch -d <branch_name>

git 용어 정리2

merge: 다른 브랜치/커밋이랑 합쳐보쟈

 

revert: 아 ㅈ됬다 옛날 버전에 이상한거 들어감

 

reset: 아 ㅄ같은 짓 했네 누가보기전에 지워야지

 

working tree: 파일 시스템

index: staging 된 애들이 가는 곳

repository: 모든 버전의 파일들이 있는 곳

ref: 포인터

HEAD: 현재 작업중인 브랜치의 제일 최근 커밋

 

git revert [options] [<commit>]
git reset [options] [args]
git merge <branch_name|commit>
# 기본 테크
# git 저장소 셋업
git init
# 현재 변경사항 스테이징
git add .
# 스테이징 된 거 커밋 + 커밋 메시지 남기기
git commit -m "message to leave"
# 리모트 저장소에 푸쉬
git push origin master
# 저장소에서 다운 받은 다음 브랜치파서 작업후 머지
git clone <url> <directory_name>
git checkout -b <new_branch_name>
...
커밋 쭉쭉
...
git checkout master|old_branch_name
git merge branch new_branch_name

git vs svn

git vs svn
커밋 단위 리비전
쌉가능 오프라인 ㄴㄴ
1초 컷 브랜치 폴더만들기
가능 포크 노가능

Aㅏ 이 집 버전관리 잘하네~

절.대.깃.헙.해

Github 사용해보자

협업이 왜 필요함?

난 짱이라 혼자 다할거임

개발 협업하면서 배웠던 점

1. 프로젝트에서 내 역할 인지하고 인지시키기

2. 본질만 남기고 거르기

3. 설득은 어렵다. 겁나

4. 내가 당연히 안다고 생각한 것들을 다른 사람을 모른다고 가정하는 게 편함

 

협업하는 이유

더 직관적으로,

더 효과적으로,

더 멀리가기 위해

Being a multiplier

임팩트에 집중

   - "꼭 해야하는 일인가요?" + "꼭 지금 해야하는 일인가요?"

   - 코드는 적게 짤 수록 좋고, 짜지 않아도 되면 가장 좋다

   - 코드 리뷰

 

지식이 흐르는 조직

   - 문서화와 자동화

   - 모든 사람이 어떤 내용이 어디에 있는지 알아야한다

   - 지식의 공유

TAKEAWAYS

같이(!) 고민하기

내가 알고 있는 것 공유하기

내가 기여한 것 공유하기

앞으로 해야할 것 공유하기

All about Git (Not really)

By Humphrey Sangtae Ahn

All about Git (Not really)

  • 335