1.포크(fork)
GitHub에서 포크(fork)는 다른 사람의 저장소를 자신의 GitHub 계정으로 복사하여 독립적으로 작업할 수 있게 해주는 기능입니다. 포크는 오픈 소스 프로젝트에 기여하거나 다른 사람의 프로젝트를 기반으로 새로운 프로젝트를 시작할 때 유용합니다.
포크의 주요 개념
- 독립적인 복사본: 포크한 저장소는 원본 저장소와는 독립적으로 존재합니다. 원본 저장소의 모든 파일, 브랜치, 커밋 등이 복사되지만, 포크한 후에는 원본 저장소의 변경 사항에 영향을 받지 않습니다.
- 자신의 저장소에서 작업: 포크한 저장소는 자신의 계정에서 관리되므로, 원본 저장소에 영향을 주지 않고 자유롭게 변경할 수 있습니다. 코드 수정, 새로운 기능 추가, 버그 수정 등을 자신의 저장소에서 자유롭게 진행할 수 있습니다.
- 변경 사항 제안: 포크한 저장소에서 작업을 마친 후, 원본 저장소에 변경 사항을 제안하고 싶다면, 풀 리퀘스트(pull request)를 생성할 수 있습니다. 이를 통해 원본 저장소의 유지 관리자는 제안된 변경 사항을 리뷰하고 병합할 수 있습니다.
포크 사용 방법
- 포크하기:
- GitHub에서 원하는 저장소의 페이지로 이동합니다.
- 오른쪽 상단에 있는 "Fork" 버튼을 클릭합니다.
- 포크가 완료되면, 해당 저장소가 자신의 GitHub 계정에 복사됩니다.
- 클론하기:
- 포크한 저장소를 로컬 컴퓨터로 클론하여 개발을 시작할 수 있습니다. 클론 명령어는 다음과 같습니다:
git clone <https://github.com/your-username/forked-repo.git>
- 작업 및 커밋:
- 로컬에서 작업을 진행한 후, 변경 사항을 커밋하고 푸시합니다:
git add . git commit -m "Your commit message" git push origin main
- 풀 리퀘스트 생성:
- GitHub 웹사이트에서 포크한 저장소의 페이지로 이동합니다.
- 변경 사항을 푸시한 브랜치에서 "Pull Request"를 생성하여 원본 저장소에 변경 사항을 제안합니다.
포크는 협업과 기여를 쉽게 만들어 주며, 다양한 개발자들이 함께 작업할 수 있도록 해줍니다.
2. 싱크(sync)
GitHub에서 싱크(sync)는 로컬 저장소와 원격 저장소 간의 변경 사항을 일치시키는 작업을 의미합니다. 이를 통해 두 저장소의 상태를 일치시키고 최신 상태를 유지할 수 있습니다. 일반적으로 싱크는
git pull
과 git push
명령어를 사용하여 수행됩니다. GitHub의 웹 인터페이스나 GitHub Desktop 등 다양한 도구에서도 싱크 작업을 지원합니다.1. git pull
git pull
명령어는 원격 저장소의 최신 변경 사항을 로컬 저장소로 가져와 병합하는 작업을 수행합니다. 이 명령어는 두 가지 작업을 자동으로 수행합니다:git fetch
: 원격 저장소의 최신 변경 사항을 로컬 저장소로 가져옵니다.
git merge
: 로컬 브랜치와 원격 브랜치의 변경 사항을 병합합니다.
사용법:
git pull origin main
여기서
origin
은 원격 저장소의 이름(기본적으로 origin
으로 설정됨)이고, main
은 브랜치 이름입니다.2. git push
git push
명령어는 로컬 저장소의 커밋을 원격 저장소에 업로드하는 작업을 수행합니다. 이 명령어를 사용하여 로컬 브랜치의 변경 사항을 원격 저장소의 해당 브랜치에 적용합니다.사용법:
git push origin main
여기서
origin
은 원격 저장소의 이름, main
은 브랜치 이름입니다.GitHub 웹 인터페이스에서의 싱크
GitHub의 웹 인터페이스나 GitHub Desktop 같은 도구에서는 "Sync" 버튼을 제공하여 싱크 작업을 더 쉽게 수행할 수 있습니다. 이 버튼은 일반적으로 다음 작업을 수행합니다:
- 로컬 저장소의 변경 사항을 원격 저장소에 푸시 (
push
)
- 원격 저장소의 최신 변경 사항을 로컬 저장소로 풀 (
pull
)
이 버튼을 클릭하면 로컬 저장소와 원격 저장소 간의 차이를 자동으로 해결하고 상태를 일치시킬 수 있습니다.
싱크의 중요성
- 협업: 여러 사람이 동일한 저장소에서 작업할 때, 서로의 변경 사항을 반영하여 충돌을 방지하고 일관된 작업 환경을 유지할 수 있습니다.
- 업데이트: 최신 기능이나 버그 수정을 포함하여 원격 저장소의 최신 상태를 로컬 저장소에 반영할 수 있습니다.
- 백업: 로컬에서 작업한 내용을 원격 저장소에 안전하게 업로드하여 데이터 손실에 대비할 수 있습니다.
싱크 작업을 통해 로컬과 원격 저장소 간의 변경 사항을 일치시킬 수 있으며, 원활한 협업과 최신 상태 유지를 도와줍니다.
Share article