티스토리 뷰
요새 도서관에 있는 자바스크립트 관련 책을 보고 있는데
2020년 이전 책에는
git push -u origin master
이런 식으로 써있는데,
내가 전과(2023년)했을 당시에는
git push -u origin main
이런 식으로만 학습했어서 두 개의 차이가 궁금했다.
1. master와 main 브랜치의 차이
결론적으로, 전통적으로 Git의 기본 브랜치는 master였다.
그래서 비교적 옛날 책들에는 master로 표기된 경우가 많지만
master라는 단어 어감 자체에서 오는 인종적 이슈 때문에 main으로 변경되고 있다.
정확히, GitHub가 2020년부터 새로운 리포지토리의 기본 브랜치 이름을
main으로 설정하기 시작하면서 널리 퍼지고 있는 것이다.
부끄럽지만, 아직 깃과 깃허브에 대한 전문적인 지식이 부족하기 때문에
새로운 리포지토리를 등록하는 과정에서 main 브랜치를 만들고 싶었는데
movie_app_2024 git:(master) ✗ git commit -m "movie_app_2024 업로드"
[master ******] movie_app_2024 업로드
이런 식으로 뜨길래 브랜치 이름을 바꾸는 방법에 대해서도 알아봤다.
나는 master → main으로 바꾸는 경우였다.
개인 프로젝트의 경우와 협업의 경우가 약간 다르다.
보통 인터넷에 검색했을 때 소개되는 방법은
로컬 브랜치 이름 변경
git branch -m master main
원격 저장소의 최신 정보 가져오기
git fetch origin
로컬 main 브랜치가 원격 main 브랜치를 추적하게 만들기
git branch -u origin/main main
원격 저장소의 기본 브랜치 자동 설정
git remote set-head origin -a
코드 전문
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
이지만, 이 경우에는 원격 master 브랜치를 삭제하지 않는다는 점이 찝찝하다.
더불어, git remote set-head origin -a 이 부분은 자동 설정되기 때문에
만에 하나 잘못 설정될 가능성이 있다.
두번째 소개할 방법은 조금 원격 master 브랜치를 삭제하는 단계가 포함되며,
원격 저장소의 기본 브랜치를 브랜치를 명시적으로 설정한다.
하지만 그럴 가능성이 적기 때문에 보통 첫 번째 방법을 쓴다.
로컬 브랜치 이름 변경 및 새로운 브랜치의 푸시 추적 설정
git branch -m master main
git push -u origin main
새로운 브랜치 푸시 및 추적 설정
git push origin --delete master
기존 master 브랜치 삭제
git push origin --delete master
원격 저장소의 최신 정보 fetch
git fetch origin
현재 브랜치의 원격 추적 제거
git branch --unset-upstream
로컬 main 브랜치가 원격 main 브랜치를 추적하도록 설정
git branch -u origin/main
원격 저장소의 기본 브랜치 설정
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
코드 전문
git branch -m master main
git push -u origin main
git push origin --delete master
git fetch origin
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
하지만 나의 경우 이 코드에서 에러가 나서
결국 간결한 첫 번째 방법을 사용했다.
마지막 코드였던
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
이 부분이 에러를 뱉은 것인데,
내 생각에 원격 브랜치 목록이 최신 상태로 업데이트 되지 않았던 것 같았다.
그냥 무지성으로
git fetch origin
이 코드를 한 번 더 실행했더니 동작했다.
만약 그래도 해결되지 않는다면,
git push origin main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
이렇게 다시 브랜치를 원격 저장소에 푸시하고 사용해보자.
참고로
git push origin main는 단순히 브랜치를 원격 저장소에 푸시하는 용도이며,
git push -u origin main는 푸시와 동시에 원격 브랜치를 추적하는 용도이다.
전자는 매번 브랜치를 명시해주어야하고
git push origin main
git pull origin main
후자는 그냥 간단하게 풀/푸시할 있다.
git push
git pull'Oops, All Code! > 🛠 Oops, My Code!' 카테고리의 다른 글
| [React] useLocation을 사용했는데 state가 자꾸 null로 반환됐다. (0) | 2024.05.25 |
|---|---|
| [React] Warning: Each child in a list should have a unique "key" prop. 해결 방법 (0) | 2024.05.24 |
| install npx 시도할 때 code EEXIST 에러 (0) | 2024.05.22 |
| [React] ERROR in Plugin "react" was conflicted between and "BaseConfig" (0) | 2023.05.19 |
| [React] Would you like to run the app on another port instead? 에러 (0) | 2023.03.19 |
- Total
- Today
- Yesterday
- 어른의어휘공부
- 코딩테스트
- 네이버부스트캠프
- react
- typescript
- 프론트엔드
- 대학생팝업스토어
- 어휘력
- 도서추천
- 소사벌맛집
- 프리코스
- 책추천
- 회고
- 일급객체
- 카페추천
- 비즈플리마켓
- 카드뉴스
- js
- javascript
- 우아한테크코스
- 웹풀스택
- 소사벌
- 프로토타입
- 경험플리마켓
- 안성스타필드
- 부스트캠프
- 서평
- 트러블슈팅
- 대학생플리마켓
- 도서리뷰
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |