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