개발을 시작하는 이야기

[GIT]기존 프로젝트 GitHub에 연결하기 본문

개발 이야기/Swift

[GIT]기존 프로젝트 GitHub에 연결하기

Teiresias 2022. 5. 26. 14:44

 노트북의 지저분한 파일들을 정리하다 보니 아직 GitHub을 스치듯 지나가며 듣기만 했을 때, Web 마크업 언어를 공부할 때 만들었던 프로젝트가 눈에 띄었다. 지금이야 Xcode에서 GitHub와 연동해서 프로젝트를 시작하는 순간부터 지속적으로 관리해주기 때문에 편하게 사용했지만, Xcode가 아닌 다른 프로젝트를 그것도 완성되어 있는 프로젝트를 업로드하는 건 또 처음이라 찾아보고 적용했다.

 

 흔치 않는 일이기 때문에 나중에 잊었을 때 다시 찾기 편하게 하기 위함과, 깃 헙과 연동하는 도중에 겪는 다양한 에러들을 정리하려고 포스팅한다.


1. 프로젝트 폴더 내 git init 생성

[윈도우가 설치된 노트북에서 진행했기 때문에 git bash를 활용했음]

[mac에서는 터미널로도 가능할 것 같은데 확인해보고 업데이트할 예정]

기존 프로젝트가 있는 폴더를 열어 마우스 우클릭, git bash here 선택

그러면 git bash 창이 열리고 git init을 통해 git을 초기화한다.

git init

2. GitHub repository 연결

깃허브에서 레포지토리를 생성한 뒤 깃헙 레포지토리 URL을 확인해서 깃헙 레포지토리와 연결한다.

git remote add origin https://github.com/teiresias22/...

연결이 잘 되었는지 확인하려면 아래 명령어를 입력한다.

git remote -v

-v는 version의 약자

3. Pull

일단 push 하기 전에 먼저 레포지토리를 pull 해주어야 한다.

git pull origin main

🤔 브랜치 변경 

깃헙의 정책 변경으로 기본 브랜치 이름이 master에서 main으로 변경되었다.

master가 아닌 main 브랜치로 push를 하고자 브랜치 체크아웃을 진행한다. 

git branch main
git checkout main
git branch -d master

성공했다면 git branch로 확인을 할 때 git bash 창의 주소줄 맨 오른쪽이 (master)에서 (main)으로 변경된다.

4. commit and push

연결된 데이터를 깃헙에 푸시한다.

git add .
git commit -m "commit comment"
git push

git add . : gitignore에 기제 된 것 고려하여 추가

git add * : gitignore에 기제된 것 고려하지 않고 모두 추가

🥸 git ignore 추가하기

git ignore를 생성해주는 사이트(https://www.toptal.com/developers/gitignore)를 통해 ignore 사항들을 추가한 뒤 다음 명령어를 수행해준다.

git add .gitignore
git commit -m "git ignore 추가"
git push

레포지토리에서 .gitignore가 보인다면 성공


Error Case

앞으로 error case는 여기에 기록하기로 함

* remote origin 삭제 (5/27 추가)

$git remote rm origin

* tracked 파일 삭제 (5/29 추가)

로컬 디렉토리와 git 저장소에서 모두 삭제

$git rm sample.txt
$gir commit -m "Delete sample.txt"

로컬 디렉토리에서는 삭제하지 않지만 git에서는 삭제

$git rm --cached sample.txt
$git commit -m "Delete sample.txt"

*git에서 commit된 대용량 파일 삭제하기(5/29 추가)

git에서는 100MB이 넘는 파일은 업로드 할 수 없음. 만일 꼭 업로드 해야 한다면 git-lfs를 활용해서 업로드 할 수 있음. 이번 프로젝트에 사용했던 파일중 하나가 여행영상 파일인데 이게 106.8MB라서 업로드가 안됨. 그래서 이번엔 삭제해서 올리기로 함. 하지만, 이 파일을 제거한 뒤에도 여전히 push하면 에러가 발생함. 이미 commit된 히스토리 상에 이 파일이 남아있기 때문임. 즉, 현재 파일시스템에 보이지 않을 뿐, git에서 여전히 이 파일을 끌어안고 있기 때문임.

이를 해결하기 위해서는 해당 파일이 commit된 이전 시점으로 되돌리고, 나머지 파일만 현재 상태로 유지해주도록 한다. 다만, 하나하나 삭제해 주어야 한다는 불편함이 있다.

$git filter-branch --tree-filter 'rm -rf sample.txt' HEAD

하지만 두번째 파일을 삭제하면 다음과 같은 메세지가 나타남

Cannot create a new backup.

A previous backup already exists in refs/original/

Force overwriting the backup with -f

대충 이미 백업이 있어서 새로운 백업을 생성할수 없고, -f를 사용해서 강제로 백업을 덮어씌워야 한다는 내용이다.

$git filter-branch -f --tree-filter 'rm -rf sample.txt' HEAD

위와 같이 -f를 붙여주면 해결.


오래전 공부하며 만들었던 마크업 프로젝트들을 보면서 왜 이렇게 했을까 싶은 것도 많지만 그래도 노력했다 싶은 것들도 있어서 뿌듯함도 있다.