로컬 저장소에 원격 저장소 추가:
cd path/to/your/local/repo
git remote add origin https://github.com/your_username/your_repository.git
원격 저장소 확인:
git remote -v
로컬 브랜치를 원격 저장소에 푸시:
git push -u origin main
원격 저장소에서 변경 사항 가져오기:
git pull origin main
트래킹 브랜치(tracking branch) == upstream 브랜치
트래킹 브랜치(tracking branch)는 로컬 브랜치가 원격 브랜치를 추적하도록 설정된 브랜치를 의미합니다. 이를 통해 로컬 브랜치와 원격 브랜치 간의 동기화 작업이 더 간편해집니다. 트래킹 브랜치를 설정하면 git pull 및 git push 명령어를 사용할 때 브랜치를 명시할 필요가 없어집니다.
왜 트래킹 브랜치를 사용하는가?
- 간편한 동기화: 트래킹 브랜치를 사용하면 git pull과 git push 명령어를 사용할 때 브랜치를 명시할 필요 없이 간편하게 동기화할 수 있습니다.
- 작업 흐름 단순화: 트래킹 브랜치를 설정해두면, 협업 시에 작업 흐름이 단순화됩니다. 각 로컬 브랜치가 어느 원격 브랜치를 추적하고 있는지 명확해지므로 혼란을 줄일 수 있습니다.
- 자동 병합: git pull 명령어를 사용하여 원격 브랜치의 변경 사항을 로컬 브랜치에 자동으로 병합할 수 있습니다.
트래킹 브랜치가 설정되지 않은 경우의 git push
트래킹 브랜치가 설정되어 있지 않다면, git push 명령어를 사용할 때 원격 저장소와 브랜치를 명시적으로 지정해야 합니다.
git push origin 로컬브랜치명:원격브랜치명
예를 들어, 로컬 브랜치 feature-branch를 원격 저장소 origin의 feature-branch에 푸시하려면 다음과 같이 입력합니다:
git push origin feature-branch:feature-branch
트래킹 브랜치가 설정되지 않은 경우의 git pull
트래킹 브랜치가 설정되어 있지 않다면, git pull 명령어를 사용할 때 원격 저장소와 브랜치를 명시적으로 지정해야 합니다.
git pull origin 원격브랜치명
예를 들어, 원격 저장소 origin의 feature-branch에서 변경 사항을 가져와 로컬 브랜치 feature-branch에 병합하려면 다음과 같이 입력합니다:
git pull origin feature-branch
트래킹 브랜치로 설정하는 방법
Git에서 로컬 브랜치를 원격 브랜치와 연결하여 추적 브랜치(tracking branch)로 설정하는 방법은 여러 가지가 있습니다.
1. git push --set-upstream 사용
새로운 로컬 브랜치를 원격 브랜치에 처음 푸시하면서 추적 브랜치로 설정하는 방법입니다.
# 새로운 브랜치 생성 및 체크아웃
git checkout -b feature-branch
# 원격 브랜치에 푸시하고 추적 브랜치로 설정
git push --set-upstream origin feature-branch
2. git branch --set-upstream-to 사용
이미 존재하는 로컬 브랜치와 원격 브랜치 간의 추적 관계를 설정하는 방법입니다.
# 로컬 브랜치 체크아웃
git checkout feature-branch
# 추적 브랜치 설정
git branch --set-upstream-to=origin/feature-branch
또는 간단히:
git branch --set-upstream-to origin/feature-branch
3. git checkout -b [branch] --track [remote/branch] 사용
새로운 브랜치를 생성하면서 추적 브랜치를 설정하는 방법입니다.
git checkout -b feature-branch --track origin/feature-branch
4. git clone 시점에서 설정
리포지토리를 처음 클론할 때 기본 브랜치를 추적 브랜치로 설정할 수 있습니다. 기본적으로 git clone을 사용하면, main 브랜치가 추적 브랜치로 설정됩니다.
git clone https://github.com/username/repository.git
cd repository
이 방법으로 클론된 저장소의 기본 브랜치는 자동으로 추적 브랜치로 설정됩니다.
하나의 로컬 브랜치는 하나의 원격 브랜치를 추적(tracking)할 수 있습니다. 이는 로컬 브랜치가 여러 원격 브랜치를 추적할 수 없음을 의미합니다. 각 로컬 브랜치는 단일 원격 브랜치와의 연결만 설정할 수 있습니다.
git pull 은 2개의 연속된 작업임(pull로만 떙길때 안될떄가잇는데 그럼 fetch)
git pull == git pull origin main
git fetch origin main
git merge origin main
git push는 아님
git fetch origin (패치 == 정보만 가져오는거)
git log origin/main (위에서 가져온 정보 확인)
정보확인해서 갖고올게 있으면 git pull