Git으로 버전관리
- 원하는 폴더에서 Git 초기화
- Git 초기화를 하면 .git이라는 숨겨진 폴더가 생성됨
- 로컬 저장소에 내가 만든 버전 정보, 원격 저장소 주소 등이 저장됨
- 원 격 저장소에서 내 컴퓨터로 코드를 받아오면 로컬 저장소가 자동으로 생성됨
- 한 폴더에 하나의 로컬 저장소만 유지해야함
Git 사용자 정보 등록
git 전역 사용자 설정 (GitHub의 닉네임과 이메일을 입력)
커밋 생성
- 원하는 파일만 선택하기
- 메세지를 달아 커밋으로 만들기
- 생성한 커밋 보기
원격 저장소 GitHub에서 만들고 커밋 푸시하기
- GitHub에 로그인해서 저장소 생성
- 내 컴퓨터 폴더에 GitHub 저장소 주소 알려주기(원격 주소 이름: origin)
- 만든 커밋 푸시하기
- GitHub 사이트에서 올라간 커밋 확인
GitHub 저장소 내 컴퓨터에 받아오기: 클론(Clone)
- 내 컴퓨터에 폴더를 만들고 GitHub의 저장소 받아오기
- 새 파일을 생성 후 add → commit → push
- GitHub에서 새 커밋 확인하기
원격 저장소의 변경사항 내 컴퓨터에 받아오기: 풀(Pull)
- 내 컴퓨터 폴더에 파일 없는거 확인
- 풀 명령어로 새로 올라온 커밋을 받기
- 새로 생긴 파일 확인
사용 중인 브랜치의 이름을 모르면HEAD
(지금 작업하는 로컬 브랜치를 가리킴)로 작성하면 된다.
Git의 4가지 파일 상태
- untracked - 추적 안됨
- tracked - 수정 없음, 수정함, 스테이지됨
브랜치 만들기
만든 브랜치로 이동하기
기존에는 checkout을 사용했었다. checkout할 때는 워킹 디랙토리를 비우고 해야한다. (컨플릭트 방지)
base 브랜치와 compare 브랜치를 합치기
base 브랜치로 이동해서 명령
컨플릭트 해결하기
- 컨플릭트가 발생하면 4가지 중 하나 선택
- Accept Current Change
- Accept Incoming Change
- Accept Both Change
- Compare Chage
- 해결된 컨플릭트 파일은 add하고 커밋
브랜치 vs 포크
ㅤ | 의의 | 편리한 점 | 불편한 점 |
브랜치 | 하나의 원본저장소에서 분기를 나눈다. | 하나의 원본저장소에서 코드 커밋 이력을 편하게 볼 수 있다. | 다수의 사용자가 다수의 브랜치를 만들면 관리하기 힘들다. |
포크 | 여러 원격저장소를 만들어 분기를 나눈다. | 원본저장소에 영향을 미치지 않으므로 마음껏 코드를 수정할 수 있다. | 원본저장소의 이력을 보려면 따로 주소를 추가해줘야 한다. |
포크한 후 풀 리퀘스트로 머지 요청 보내기
- 포크를 하고 내용을 add하고 커밋
- GitHub에서 Contribute 클릭 후 Open pull request 버튼 클릭
- pull request 작성
- Merge pull request 버튼 클릭
풀 리퀘스트로 머지 요청 보내기
- 코드를 함께 작성하는 팀원이 있다면, 최대한 직접 머지하는 건 피하고 모든 머지를 풀 리퀘스트를 통해서 하기
- 동료가 내 풀 리퀘스트(PR)을 보고 코드를 리뷰할 수 있다.
- 동료의 PR에 수정이 필요하면 댓글을 달아 change request를 보낼 수 있다.
- 오픈소스에 PR을 보낼때는 기여 안내문서(contribution guideline)을 반드시 참고
브랜치 관리하기
- 보통
feat/기능이름
으로 한 사람이 개발하는 기능 브랜치를 만든다. (혹은fix/버그이름
,hotfix/급한버그
)
- 작업이 끝나면
dev
(혹은main
) 브랜치로 PR을 보낸다.
dev
브랜치에서 큼지막한 작업이 모두 머지되면release
(혹은latest
) 브랜치로 머지시키고 이를 실서버에 배포한다.
- 직접 커밋은
feat
(혹은fix
,hotfix
)브랜치에만 한다.
dev
나main
,release
브랜치에는 직접 커밋하지 말고 머지만 한다.
amend: 깜빡하고 수정 못한 파일을 방금 만든 커밋에 추가하고 싶을 때 쓰는 명령
- 커밋 생성
- 코드 업데이트
- 기존 커밋에 amend해서 커밋 수정 & push
- 커밋 메세지만 수정
- force push(히스토리도 변경)
- vscode
- “…” 버튼을 클릭
- Commit > Commit Staged (Amend) 혹은 Commit All (Amend)
stash: 변경사항을 잠시 킵하기
- vscode
- “…” 버튼을 클릭
- Stash > Stash
- 다시 불러오고 싶다면 Stash > Pop Stash
reset: 옛날 커밋으로 브랜치를 되돌리기
- reset의 3가지 옵션
- -soft : add한 상태, staged 상태, 파일 보존
- -mixed : add하기 전 상태, unstaged 상태, 파일 보존
- -hard : add하기 전 상태, unstaged 상태, 파일 삭제
- vscode
- “…” 버튼을 클릭
- Commit > Undo Last Commit ← soft
- Staged Changes에서 취소하고 싶은 파일에서 “-”(Unstage Changes) 클릭하여 스테이징을 해제
- Changes에서 “↺”(Discard Changes) 클릭
- 터미널에서
git push -f origin main
revert: 커밋의 변경사항을 되돌리기
히스토리를 변경하지 않고 새로운 커밋을 만들어서 되돌아간다.
- sourcetree
- 히스토리에서 원하는 커밋 마우스 오른쪽 클릭
- Reverse commit 클릭
cherry-pick: 커밋 하나만 떼서 지금 브랜치에 붙이기
- sourcetree
- 다른 브랜치의 원하는 커밋 마우스 오른쪽 클릭
- Cherry Pick 클릭
유용한 PR 양식
주요 변경사항
- 이 PR이 해결하는 문제
링크
- 디자인 시안 링크 / 슬랙 관련 대화 링크
시급한 정도
- 보통 / 긴급 / 천천히
중심적으로 봐주었으면 하는 부분
- 변경사항이 큰 경우 집중해야 할 부분, 또는 불안해서 봐주었으면 하는 부분 등