본문 바로가기

문돌이 존버/코딩연습

git 기본 지식 쌓기(3)

반응형

최근 git에서는 master라는 브랜치 이름 대신 main이라는 이름을 사용합니다. master가 노예를 연상시킨다는 이유로 이름을 바꾼 것인데요. 따라서 이전에 만든 레퍼지토리라면 master로 표시되고, 최근에 만든 것이라면 main이라고 표시될 것입니다. 만약 깃허브 상에서 보이는 이름과 git bash에서 보이는 이름이 다르다면 이름을 통일해주어야 합니다.

깃허브 상에서 바꾸려면 Settings 메뉴를 누르고 Branches 탭에서 이름을 수정하면 됩니다.

git bash에서 바꾸려면 아래 명령어를 실행하면 됩니다.

git branch -m master main
git fetch origin
git branch -u origin/main main

git push나 pull을 할 때 아래와 같은 에러 메시지가 나타나는 경우가 있습니다.

"fatal: refusing to merge unrelated histories"

이는 로컬 저장소와 원격 저장소의 기록(history)을 비교했을 때, 소스코드의 차이가 심한 경우 병합(merge) 오류가 날 것을 대비하여 에러를 발생시키는 것입니다. 만약 병합 오류가 나지 않을 것이라고 확신한다면(단순 파일 1~2개 차이) --allow-unrelated-histories로 강제 병합을 시킬 수 있습니다.

git pull -u origin branch_name --allow-unrelated-histories

다른 브랜치를 main 브랜치로 merge하는 작업은 아래 명령어로 간단히 진행할 수 있습니다.

git checkout main # master
git merge {병합할 branch}

하지만 main 브랜치에 다른 브랜치에 있는 파일과 같은 이름의 파일이 있다면 충돌(Conflict)이 발생하며 에러 메시지가 뜹니다. 이때 vi를 사용하여 직접 해당 파일 내용을 수정해준 뒤 add 및 commit을 하면 손쉽게 해결할 수 있습니다.

충돌이 발생했을 때 내용을 수정하지 않고 아예 merge를 취소하려면 아래 명령어를 이용합니다.

git merge --abort

git token 만료 전 재연장을 했는데 이상하게 "Authentication failed" 문제가 발생했습니다. 새롭게 토큰이 발급되는 것인지.. 저는 새로운 토큰을 본 기억이 없어서 이전 토큰으로 유지했는데 push를 하지 못하네요.

다시 토큰을 새로 발급받고 이전에 연결했던 원격 저장소를 다시 연결해보겠습니다.

# 기존 원격저장소 삭제
git remote remove origin
git remote add origin https://id:token@github.com/id/repository name
git push

이렇게 하면 새롭게 발급받은 토큰으로 원격 저장소 역시 새롭게 연결될 것입니다. 이때 윈도우라면 "자격 관리 증명자"에 들어가서 기존에 저장했던 깃허브 토큰 정보 역시 바꿔줘야 합니다.


git 원격저장소에 있는 파일 이름을 변경하고 싶을 때가 있습니다. 이때는 git mv 를 통한 방법으로 간단하게 가능합니다.

git mv old_file new_file
git commit -m "new name"
git push -u origin main

용량이 큰 파일(100mb가 넘는)을 push하려다 실패해서 로컬 파일을 삭제했음에도 깃은 해당 파일의 복사본을 가지고 있기 때문에 다시 push를 하려고 해도 동일한 에러가 발생합니다. 즉 원격 저장소와 로컬 저장소의 히스토리가 동일해야 받아지므로 히스토리를 비워주어야 합니다.

# 로컬에서 파일 삭제
git reset --soft HEAD~N # N개 커밋이 있다면 해당 커밋 취소
git commit -sm 'message' # 이 작업을 Squash라고 함
git push origin branch
참조
https://baeharam.github.io/posts/git/gitfailed-to-push-large-file-after-deleted/
이전 시리즈 보기
 

git 기본 지식 쌓기(2)

아래는 원격 저장소에 있는 브랜치를 확인하고 특정 브랜치를 선택하는 일련의 과정입니다. git init git remote add origin "YOUR ADDRESS" git remote update # 모든 브랜치 확인 git checkout -t origin/"BRANC..

moondol-ai.tistory.com

 

728x90
반응형