프로젝트를 진행하면서 역시 협업이 가장 중요한 요소라는 것을 느낄 수 있었다.
협업의 기본이 되는 형상 관리를 제대로 할 수 있도록 배우고 노력해야겠다.
- Git 기본 용어
- 형상 관리
Working Directory
: 작업이 진행되는 프로젝트 폴더
git add
시 Staging Area 로 전달된다.merge
를 통해 병합가능하다.Staging Area
: 변경된 코드가 Local Repository 에 저장하기 전 머무르는 중간 영역
commit
을 통해 저장할 수 있다.Local Repository
: 내 PC 내에 있는 저장소
push
를 반영할 수 있으며 Remote Repository 에 저장된 코드를 fetch
를 통해 Local Repository 에 가져올 수 있다.Remote Repository
: 원격 저장소 GitHub
git add
: 저장소에 코드 추가
commit
: 로컬 저장소에 코드 업로드
push
: 로컬 저장소로부터 원격 저장소 github 에 업로드
fetch
: 원격 저장소 github 로부터 다운받아 로컬 저장소 동기화
pull
: 원격 저장소 github 로부터 다운받아 로컬 저장소 동기화하고 merge 병합
로컬 저장소를 설정하는 방법
Local 의 Create 에서 탐색 클릭
형상 관리를 진행 할 C 드라이브의 workspace 폴더 선택 후 파일이 이미 존재한다는 대상 디렉토리 문제 오류 무시
파일 상태 메뉴에서 스테이지에 올라가지 않은 모든 파일을 올리지 않고 공유해주신 메모장 파일을 workspace 폴더에 모든 파일 형식으로 .gitignore 파일명으로 저장
수시로 변경되는 등 공유하지 말아야 할 것들을 .gitignore 파일에 입력했으므로 이 파일을 스테이지에 올리고 커밋 내용 입력해 커밋
무시된 파일을 제외하고 나머지 파일들 커밋 완료
원격 저장소를 생성 및 연결하는 방법
Github 접속 후 저장소 이름과 Public 선택해 Create repository 생성
Settings 의 Developer settings 에서 Personal access tokens 으로 개인용 토큰을 생성해줌
Tokens (classic) 에서 Generate new token (classic) 클릭 후 이름명과 No Expiration 선택 후 repo 검색해서 모두 체크하고 Generate token 클릭하면 뜨는 개인용 토큰 비밀번호 복사
Github 에서 생성한 repository 인 workspace 클릭해서 HTTPS 주소 복사
소스트리에서 + 버튼 클릭 후 Remote 원격 저장소에서 계정 추가 클릭해 호스팅 서비스 GitHub 와 OAuth 토큰 새로고침 클릭
원격 버튼의 추가버튼 클릭 후 원격 이름은 디폴트 원격 체크하고 URL 경로는 https://유저네임:토큰값@github.com/레파지토리주소.git 작성한 뒤 추가 확장 통합에서 내 계정 선택
master 브랜치 이름을 main 으로 변경
Push 버튼의 main 클릭 후 Push 누르면 GitHub 에서 작업한 코드 확인 가능
다른 장소에서 원격 저장소 pull 과 push 하는법
소스트리에서 + 버튼 클릭 후 Remote 원격 저장소에서 계정 추가 클릭해 호스팅 서비스 GitHub 와 OAuth 토큰 새로고침 클릭
원격 버튼의 추가버튼 클릭 후 원격 이름은 디폴트 원격 체크하고 URL 경로는 https://유저네임:토큰값@github.com/레파지토리주소.git 작성한 뒤 추가 확장 통합에서 내 계정 선택
C 드라이브에 있는 homeworkspace 폴더에 코드 가져오려면 Remote 클릭 후 새로고침 누르면 GitHub 에 있는 폴더를 집에서 생성한 폴더로 복제 해오겠다는 의미인 clone 클릭
탐색 누르면 두 번째 칸이 저장 위치인데 이곳에서 homeworkspace 선택하고 클론 버튼 클릭
위 작업까지 완료하면 사실상 폴더 자체가 아니라 코드만 가져오게 되므로 이클립스에서 homeworkspace 의 Java 폴더를 켜고 Working Tree 에서 가져올 폴더에 마우스 우클릭해 Import Projects 클릭 후 Finish 해서 이클립스에 가져와야함
전체적으로 집에서 공부한것을 Github 에 업로드하는 과정은 집에서 Commit 하고 Push 한 뒤 no helper 와 Always use this from now on 클릭하고 로그인창 뜨면 로그인하면 완료
학원에서는 Pull 을 통해 동기화하면 완료이며 모든 깃 작업은 일반적으로 Pull - Commit - Push - Pull 순으로 진행됨
기타 소스트리 사용법
협업 시 절대로 Push 한 커밋은 수정하면 안되며 무조건 해야 한다면 팀원 모두에게
알리고 Force Push 하기
Revert
: 되돌리기
History 에서 커밋 되돌리기를 클릭한다. 파일들을 이전 커밋 상태로 되돌린 새로운 커밋을 생성하는 것이며 이전 커밋을 수정하지 않고 그대로 남겨두므로 안전하다. Revert 후에는 새로운 커밋이 생성되므로 충돌없이 바로 Push 할 수 있다.
Reset
: 초기화
History 에서 이 커밋까지 현재 브랜치를 초기화를 클릭한다. Soft 는 모든 로컬 변경사항을 유지하는 것이고 Hard 는 커밋 이후로 완전히 지우는 것이며 Mixed 는 작업 상태를 그대로 두고 인덱스만 리셋하는 것이다.
메뉴에서 병합 클릭 후 현재 병합할 브랜치를 선택
Fast Forward Merge
: 기존 커밋에 새로운 기능들만 추가되거나 삭제된 것으로 다른 코드와 충돌할 일이 없다.
True Merge
: 충돌이 발생할 수 있으며 Git 이 자동으로 코드를 합쳐주지 못할 때 충돌이 발생하므로 직접 무슨 코드를 남겨둘지 결정해야 한다.
소스트리의 충돌 기능 대신 비주얼 스튜디오에 내장된 Git 기능으로 해결하는 것 추천
충돌 발생한 Git 저장소 폴더를 열고 팀 탐색기에서 변경 내용을 클릭하면 병합 진행 중 창이 뜨는데 여기서 충돌 파일을 클릭한다. 병합하고 싶은 코드 선택 후 병합 수락을 클릭하면 병합이 완료된다.
소스트리로 돌아와서 병합한 파일을 Commit 해서 Conflict 을 해결한다.