troubleShooting

트러블 슈팅 git master, main

HJHStudy 2024. 6. 11. 21:41
728x90

멀티 모듈을 구성하기 위해 깃 클론을 하던 도중 생긴 트러블 슈팅에 대해 간략히 알아보고 가겠다.

 

깃 클론하던 도중 생겨난 이슈로 

-MacBookAir multiModuleProject % git push -u orgin master
오브젝트 나열하는 중: 391, 완료.
오브젝트 개수 세는 중: 100% (391/391), 완료.
Delta compression using up to 8 threads
오브젝트 압축하는 중: 100% (346/346), 완료.
오브젝트 쓰는 중: 100% (391/391), 55.93 MiB | 12.89 MiB/s, 완료.

 

실수로 push를 master로 했고 기본 branch는 main인데 쓸모없는 master branch가 생겼다. 그리고 origin도 실수로 orgin으로 생성했다.

orgin으로 생성하는 것이야 원래는 별칭으로 origin을 많이 사용하지만 별칭이니 특별하게 사용해 보자라는 생각으로 별칭은 그냥 사용하기로 하고 별칭은 변경할 수 있다.

git remote rename {변경 전} {변경 후}

 

위 명령어로 변경할 수 있다. 아무래도 origin에 익숙해져 있어서 불편하게 되면 바꿀 예정이고 트러블 슈팅인 master가 생성되고 push 해버린 것에 대해 알아보자.

 

git에서는 기본 브랜치 명이 master이고 github에서는 리포지토리의 기본 브랜치 명이 main이다.

이는 Black Lives Matter 운동으로 master/slave 등의 IT에서 사용되는 용어에도 정화가 필요하다는 의식이 생기고 있을 때 Github에서 2020년에 리포지토리의 기본 브랜치명을 master에서 main으로 변경했다.

 

바로 push를 해버려서 master 브랜치가 생성되어서 분기점이 생겼다.

master에 push 한 내용을 main으로 옮기자.

이하 방법을 따라한다면 main 작업한 게 모두 덮어 씌워지지만 리포지토리를 방금 생성했기 때문에 진행하기로 했다. 만약 이미 main에 파일이 존재한다면 다른 방법을 찾아야 한다.

 

덮어씌워서 진행해보자.

git checkout master
git branch main master -f
git checkout main
git push origin main -f

이 명령어 순서대로 진행하게 되고 각 명령어 설명은

git checkout master: 현재 작업 중인 브랜치를 master 브랜치로 변경한다. 이 명령은 현재 브랜치를 변경하는 역할을 한다.

git branch main master -f: main 브랜치를 master 브랜치로 변경하는 명령이다. -f 옵션은 브랜치를 강제로 변경하도록 한다.

git checkout main: 이 명령은 새롭게 main 브랜치로 이동하는 것이다. 이제 main 브랜치로 이동하여 작업을 계속할 수 있다.

git push origin main -f: main 브랜치를 원격 저장소에 강제로 푸시한다. -f 옵션은 강제 푸시를 수행하도록 한다. 이는 원격 저장소에 이미 main 브랜치가 있고 그 브랜치의 히스토리를 덮어쓰는 작업을 수행하므로 이 명령을 사용할 때는 주의해야 한다.

 

 

 

git config --global init.defaultBranch main

git push origin --delete master

git branch -d 브랜치명

 

위 이미지에서는 아래에 명령어 3개도 진행했다. 각 설명을 하자면

 

config는 설정에 대한 것이고 --global 옵션은 전역 설정을 의미하며, Git에서 사용하는 모든 저장소에 적용된다. init.defaultBranch 설정은 Git 저장소를 초기화할 때 기본적으로 생성되는 브랜치의 이름을 설정한다. 여기서는 main으로 설정하여 새로운 저장소가 생성될 때 기본 브랜치로 main이 생성되도록 한다.

 

git push origin --delete master: 이 명령어는 원격 저장소에서 master 브랜치를 삭제하는 것이다. --delete 옵션은 특정 브랜치를 삭제하는 옵션이다. 이 명령어를 실행하면 원격 저장소의 master 브랜치가 삭제되고 삭제된 브랜치는 다시 복구할 수 없으니 주의해야 한다.

 

이렇게 삭제하게 되면 원격 저장소에서만 삭제된다. 즉, github에서 삭제되는 것으로 로컬 저장소 git에서도 브랜치를 삭제해야 하기 때문에 git branch -d 브랜치명 명령어로 브랜치를 삭제해 준다. 여기서 -d는 delete 옵션을 나타낸다.

 

이와 같이 하면 

 

 

로컬과 원격 저장소에 master 브랜치가 삭제된 것을 확인할 수 있다.

이로써 해결했다.

728x90

'troubleShooting' 카테고리의 다른 글

kafka 트러블 슈팅  (0) 2024.06.20