1. Git
Git이란 컴퓨터 파일의 변경 사항을 추적하고 파일들의 작업을 조율하는 분산 버전 관리 시스템입니다.
변경 관리, 브랜치, 머지 등 다양한 기능을 제공하여 소스 코드를 관리하는 데에 주로 사용됩니다.
2. Github
Github는 Git 저장소를 호스팅하는 클라우드 서비스를 말합니다.
Pull Request, Issue, Projects 등 협업 기능을 제공하고, 이 깃허브를 통해 코드 리뷰 및 문서화 기능을 이용할 수 있습니다.
3. 자주 쓰는 용어
- Repository 레포지토리: 저장소로, 프로젝트 파일과 해당 파일의 변경 이력이 저장되는 곳이다.
- 로컬 저장소, 원격 저장소 두 종류가 있다.
- Commit 커밋: 파일 또는 디렉토리의 변경 사항을 로컬 저장소에 기록한다.
- 커밋은 변경 내용, 작성자, 날짜 같은 정보와 함께 고유한 ID를 가진다.
- ID를 통해 특정 시점의 프로젝트 상태로 돌아갈 수 있다.
- 깃의 커밋은 새롭게 변경된 부분만 추출해서 저장해 시간에 따라 변화된 것만 영구적으로 저장한다.
- 이러한 저장 방식을 '스냅샷' 방식이라고 한다.
- Branch 브랜치: 작업을 분리하기 위한 수단
- 주로 master 또는 main 브랜치가 주 브랜치로 사용된다.
- 기능 추가, 버그 수정 등을 위해서 새로운 브랜치로 생성하여 작업한다.
- Merge 머지: 병합으로, 두 브랜치의 변경 사항을 하나로 합치는 과정이다.
- Conflict 충돌: 두 브랜치를 병합할 때, 같은 파일의 같은 부분이 다르게 수정되어 Git이 병합할 수 없는 상황이다.
- Pull 풀: 원격 저장소의 변경 사항을 로컬 저장소로 가져오고 자동으로 현재 브랜치와 병합하는 과정이다.
- Push 푸시: 로컬 저장소의 변경 사항을 원격 저장소로 업로드하는 과정이다.
- Fetch 패치: 원격 저장소의 최신 history를 로컬 저장소로 가져오지만, 현재 작업 중인 브랜치와는 병합하지 않는다.
- Staging 스태이징: 커밋 전 변경 사항을 준비하는 단계이다.
- Tag 태그: 특정 커밋을 참조하기 위한 레이블이다.
- Checkout 체크아웃: 다른 브랜치로 전환하거나 특정 버전의 파일을 작업 디렉토리로 가져오는 과정이다.
- Clone 클론: 원격 저장소의 복사본을 로컬 저장소에 생성한다.
- Fork 포크: 다른 사용자의 원격 저장소를 자신의 원격 저장소로 복사하는 과정이다.
- Pull Request 풀 리퀘스트: PR은 하나의 브랜치에서 다른 브랜치로 변경사항을 병합하기 위한 요청이다.
4. 팀원분들이 해주시면 되는 작업
일단 다들 처음이라 브랜치를 따로 따서 진행하진 않고 그냥 메인으로 계속 PR하는 방식으로 생각 중입니다.
깃허브 팀 레포에 제가 프로젝트를 하나 올려두면 그 레포를 각자 깃허브 레포지토리에 포크해오고 그 레포지토리를 클론해 로컬에 연동하는 방식으로 진행하겠습니다.
텍스트로만 우선 정리하자면
- 팀 리포지토리 포크하기:
- 팀 Github 리포지토리 페이지로 이동
- 우측 상단의 "Fork" 버튼 클릭
- 본인의 GitHub 계정 선택
- 이렇게 하시면 본인 github.com/계정명/프로젝트명 에 포크된 리포지토리가 생성됩니다.
- Fork 앱으로 클론하기:
- Fork 앱 실행
- "File" > "Clone" 메뉴 선택
- 포크한 리포지토리 URL 입력 (https://~~.git) <-- 이 부분은 제가 주소 따는 방법 알려드릴게요
로컬 저장 경로 지정: 어느 폴더에 프로젝트 저장할지 선택하시고 Clone 버튼 클릭하면 클론까지 완료됩니다.
3. 원격 저장소 설정: 클론 후 Fork 앱에서 Remote > Add 메뉴로 원본 팀 리포지토리를 "upstream"으로 추가
- 이렇게 하시면 팀 리포지토리의 변경사항을 쉽게 가져올 수 있음
- 아마 이 앞단계까지 완료됐으면 origin이라는 이름으로 본인 GitHub 상에 아까 포크했던 리포지토리에 연결되어있을겁니다.
실습해보고 사소한 컨플릭트 해결도 정말 오랜만에 겪어보는지라 좀 헤맸는데, 결국 나중에 필요한 역량이니 차라리 지금 더 맞닥뜨리면 좋겠다는 생각이다. 나중에 시간없을때 충돌이 난다고 상상하니 아찔,,
'Git, Github' 카테고리의 다른 글
[TIL / 25.03.25] 제목은 gitignore 트러블슈팅으로 하겠습니다,, 근데 이제 cherry-pick, rebase를 곁들인 (0) | 2025.03.25 |
---|---|
[TIL / 25.03.06] 컨플릭트 지옥에 갇히게 되,,, (feat. project.pbxproj) (0) | 2025.03.06 |