git 설정한 directory를 상위 directory로 변경하는 방법

Jiwon Yi·2023년 3월 10일
0

왜?

이런 상황이 생겼다.
외부에 제공하는 API를 하나 추가해야 할 일이 생겼다. 작업 위치로 들어가보니 그 전 작업자가 public_html 아래에 aa(실제로 이 이름이 아니라 예시)라는 디렉토리를 만들고 이 디렉토리 안에서 git을 설정하고 gitlab 원격 저장소를 연결해놓은 상태.
그런데 내가 다른 endpoint가 필요해서 bb 라는 디렉토리를 만들고 작업을 하려고 보니 새로 git init을 해야 하는 상황인 것이다. 굳이 public_html 아래에 디렉토리마다 저장소를 관리해야 할 이유가 없었기 때문에, aa가 아닌 상위 디렉토리로 기존 git 설정을 가져오기로 했다. 물론 commit 내역도 보존해야 했다.
어떻게 하면 좋을까?

어떻게?

나의 검색 능력 부족 탓인지 내 상황과 맞는 방법을 찾기가 어려웠다.
repository 통합? 아니다. git 디렉토리 이동?? 그것도 아니다.
그러다가 이것을 찾았다.
딱 나의 상황에 맞는 방법이었고 생각보다 간단했다.

이렇게

한마디로, aa 디렉토리가 새로운 public_html이 되도록 만들어 주면 된다.

즉, 바꿔치기를 하는 것이다.

수정 전에는 이런 구조로 되어있었다.

  1. aa 디렉토리 안에서 새로운 aa를 만든다.

  2. 기존 aa안에 있던 파일과 디렉토리들을 git mv 명령으로 새로 만든 aa안으로 이동한다.

    public_html$ cd aa
     aa$ mkdir aa
     aa$ cd aa
     aa$ git mv lib index.php aa/
  3. git status를 입력해보면 파일명이 변경된 것 처럼 나올 것이다. 이때, 기존에 gitignore에 들어가있는 파일이나 디렉토리는 당연히 git mv 명령어로 이동되지 않는다. git이 관리하는 파일이 아니기 때문. 그런 파일들은 그냥 mv 명령으로 이동시켜 주면 된다.
    기존 aa 밑에 있는 내용들을 .git.gitginore를 제외하고 새로 만든 aa 안으로 이동하는 것이 포인트다.

    현재 구조를 다시 한번 확인하면 이런 상태다.

  4. 다시 기존의 aa안에 이번에는 bb 디렉토리를 새로 만든 aa 안으로 이동한다. 여기에서는 없지만 만약 public_htmlaabb 디렉토리 외에 다른 파일들이 있었다면 이 파일들도 새로 만든 aa로 이동한다.

    이제 디렉토리는 아래와 같이 되었다.

  5. 이제 public_html 로 이동해서 aa 디렉토리를 public_html로 변경하기만 하면 끝이다. 다만, 그 전에 일단 public_html의 이름을 임시로 다른 이름으로 변경한 후에aa를 변경해야 한다.

    public_html$ cd ..
     ~$ mv public_html public_html2
     ~$ cd public_html2
     public_html2$ mv aa ../public_html
  6. 이렇게 해서 원하던 대로 아래와 같은 경로의 디렉토리 구조를 가지게 되었다.
    git log를 확인해보면 기존 commit 내역들도 그대로 남아있는 것을 확인할 수 있다.

  1. gitignore 파일을 열어서 기존 경로를 aa아래로 수정해주고, 새로 추가된 파일들과 변경된 경로들에 대한 내용을 commit 해주면 완료.
profile
퍼덕거리는 개발자

0개의 댓글