[개발] 지식/Git

기존 로컬 Repository를 수정 후, 새로운 Git Repository에 push하기

하하미아 2022. 7. 20. 17:27

상황 설명

A라는 프로젝트와 비슷한 구조의 B를 만들어야 하는 상황이 생겼다. 보통은 A를 fork 하거나, mirror clone 하여 새로운 Repository를 만들어 github과 연동 시킬 것이다.

하지만 이번에는 너무 급해서 로컬에 있는 A Repository를 그대로 복사하여 내용을 수정하고 배포한 상황이다. 테스트 성격의 소스라 이렇게 대충 처리를 했는데, 요구사항이 계속 나오는걸 보니 아무래도 형상관리를 해야할 것 같다.

상황을 다시 정리하자면, 로컬의 A Repository(이하 Repo)를 복사하여 B Repo를 만들었고, B Repository는 A(Remote) Repo와 연결된 상황. B(Remote) Repo를 생성하고, B Repo와 연결하여 Push하고 싶다. A Repo 이력은 지워져도 상관없다.

Solution

1. 기존에 연결된 원격 Repo URL 확인

git remote get-url --all origin

일단 B Repo에 연결된 원격 url을 확인한다. 기존의 A(Remote) Repo URL이 연결되어 있을 것이다.

2. B Repo 디렉터리로 이동하여 .git 폴더 삭제

A(Remote) Repo와 관련된 정보는 삭제되어도 좋다. 오히려 별개의 프로젝트를 생성하려는 것이므로 삭제되는게 더 나을 것이다.

sudo rm -rf .git

Repo의 루트 디렉터리에는 .git 이라는 디렉터리가 있다. 아마 숨김으로 되어 있을 것이다. 해당 디렉터리에는 git과 관련된 정보들이 모두 담겨있다. 위 명령어를 수행하여 관련 기존 git 정보를 삭제한다.

3. git 초기화

git init

이전 Repo와 관련된 git 정보를 삭제했다면, 이제 다시 생성을 해야 한다. 위 명령어를 수행하여 .git 디렉터리를 생성하고 초기화한다.

4. 모든 소스 Add (변경사항 추적)

git add .

A Repo를 복사하여 일부만 수정한 상황이지만, B(Remote) Repo를 새로 생성하였으므로 모든 소스를 Push 해야 한다. 그러기 위해 루트 디렉터리로부터 변경사항을 추적하여 commit&push할 수 있게끔 모든 파일을 Add 한다.

5. 원격 Repo URL 등록

git remote add origin <B Remote Repo URL>

새로 생성한 원격 Repo URL을 연결하는 작업. B Repo의 remote url을 할당하여, Push를 준비한다.

6. Staging, Commit, Push

add를 통해 모든소스가 변경사항이 존재하는 것으로 간주되고 있을 것이다. 기존에 하던대로 Staging, Commit, Push 작업을 수행하면 된다. 특이사항이 없는 작업이므로, 기존에 툴을 사용했다면 똑같이 툴을 사용해서 Push 해도 된다.