일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- node 설치
- dot notation
- 코딩게임
- 2번째 페어
- 호이스팅
- npm 설치
- for in
- Bracket Notation
- javascript 기초
- includes
- nvm 설치
- global scope
- HTML 태그 모음
- indexof
- 코플릿
- local scope
- 슈도코드
- 스프린트 리뷰
- JavaScript Runtime
- package.json
- Splice
- for of
- immutable
- TIL
- version control system
- 코드스테이츠 1일차
- Jest
- testbuilder
- foreach
- supertest
- Today
- Total
Honey-Programming
Git workflow 본문
1. 진행하려는 Sprint의 Repository를 Fork 해온다.
2. 복사해온 스프린트 레포지토리를 각자의 로컬로 가져온다.
git clone <repository URL>
3. 페어의 레포지토리와 나의 로컬을 연결해야 한다.(서로 공유를 하기위함)
git remote add pair <Repository URL>
git remote -v
4. 코드를 추가 또는 수정 했으면 파일을 추가하고 commit을 한다.
git add <change file>
git commit -m 'change'
5. 작업한 코드를 리모트 레포지토리에 push
git push origin master
6. 리모트 레포지토리에서 자신의 로컬로 pull을 사용해서 코드를 가져옴
git pull pair master
7. 새로운 코드를 작성하고 commit한다.
git add <change file>
git commit -m 'change TOO'
8. 자신의 레포지토리에 push
git push origin master
9. 작성된 코드를 다시 자신의 로컬로 가져온다.
git pull pair master
주의사항 : 항상 push는 자신의 레파지토리에서, pull을 할때는 페어의 레파지토리에서 해야함
Git Conflict (깃 충돌)
'철수'와 '영희'가 영화 예매 사이트를 만들기 위해 remote repository를 만들었다.
'철수'는 예매 기능을 만들기로 했고, '영희'는 회원가입 페이지를 만들기로 했다.
'철수'는 예매 기능을 만들어 remote repository에 push 했다. commit => 'version 11.11.5'
'영희'는 '철수'가 예매 기능 코드 피드백을 요청받았다.
하지만 영희는 '철수'의 코드인 version 11.11.5을 pull 만 하고 바로 친구와 술을 먹던 도중
인사불성이된 영희는 집에 가던 도중 핸드폰을 잃어버렸다.
'철수'는 '영희'가 술에 떡이 된줄도 모르고 자신의 예매 기능을 보던 중 오류 하나를 발견했다.
그래서 '철수'는 발견한 오류를 수정한 후 다시 push 했다. commit => 'version 12.11.0
오류를 고친 '철수'는 영희에게 카톡으로 코드에 오류가 있어서 고쳤으니 다시 pull을 요청했다.
핸드폰을 잃어버려 철수가 오류를 고친뒤 다시 push 해서 버전이 바뀐걸 알리가 없는 영희는
컴퓨터 앞에 앉아 '철수'에게서 받은 코드 'version 11.11.5'를 살피던 도중 철수와 똑같은 오류를 발견했다.
철수가 이미 고친 오류지만, 알리가 없는 '영희'는 그 자리에서 오류가 난 곳을 자기만의 코딩 스타일로 수정을 했다.
오류를 고친 '영희'는 commit => 'version 11.11.6'으로 하고 git push origin master 하는 순간 문제가 발생했다.
'영희'는 fetch first 라는 문구를 발견했다. 이것은 리모트 레파지토리에 있는 변경사항을 먼저 받아와라 라는 뜻이다.
그래서 fetch를 하기 위해 '영희'는 git pull origin master를 쳤다. (pull 안에 fetch가 포함되어있어서 바로 pull)
'철수' 꺼를 받아는 왔지만, CONFILCT (content) 충돌이 발생했다. 라고 뜬다.
그래서 '영희'는 VS Code를 열었더니 아래와 같이 떴다.
'철수'가 코드를 2차 수정했었는데, '영희'는 '철수'의 1차 코드를 자신의 로컬에 저장을 한다음
수정을 했기 때문에 '철수'가 2차 수정한 코드와 '영희'가 지금 수정한 코드가 충돌이 일어났다.
위의 코드에서 '영희'가 수정한 코드는 6~7번째 줄인 divide 함수이다.
Current Change 내 변경사항 또는 현재 변경사항이다
그리고 '철수'가 수정한 코드는 9~10번째 줄인 subtract 함수이다.
Incoming Change 상대방으로부터 받은 변경 사항이다
'영희'가 Accept Current Change를 누른면 '영희'의 코드만 남고, '철수'의 2차 코드는 사라진다.
'영희'가 Accept Incoming Change를 누른면 '철수'의 코드만 남고, '영희'의 코드는 사라진다.
'영희'가 Accept Both Change를 누른면 '영희' 와 철수'의 코드 2개다 남는다.
'영희'는 일단 Accept Both Change 를 눌러 2개의 코드를 최종적으로 남겼다.
이 상태에서 git status를 하면 unmerged 된 상태이기 때문에, 'git add <file_name>' 을 해준다.
그 다음 git status로 확인하고, git commit -m 'completed mrege' 를 써준다.
마지막으로 git push origin master 을 해주면 이제 리모트 레파지토리로 올라간다.
'코드스테이츠 > Immersive' 카테고리의 다른 글
[자료구조] Graph, Tree, BST (0) | 2020.09.04 |
---|---|
[자료구조] stack, queue 구현하기 (0) | 2020.09.04 |
[자료구조] Linked List, Hash Table (0) | 2020.09.03 |
[자료구조] stack, queue (0) | 2020.09.03 |
node.js / nvm / npm / package.json (0) | 2020.09.01 |