[git] respositories 합치(는 것을 시도하)기

KAYA·2021년 12월 30일
0

내 깃허브가 지저분하다고 느낀 지 1년 쯤 되는 것 같다.

(개발 공부를 시작한지가 1년이 안 된듯도 ㅋ^^)
처음엔 레파지토리를 모두 삭제하고, 필요한 걸 새로 만들어 정리해서 다시 넣곤 했는데, 뭔가 그 간의 기록이 사라지는 게 아까웠다.
(대단하고 거창한 기록은 아니지만 뭔가 오래 전부터 끄적여왔다는 걸 증명할 방법이 사라지니까..ㅎㅎ )
그래서 오늘은 꼭 레퍼지토리 병합을 시도해야겠다 다짐했다.

나는 깃을 (안다고 생각했지만) 잘 모른다.

처음 방법을 찾아 보았을 땐, 그냥 창을 닫았다.
뭔 얘긴지 이해할 수 없었기 때문이다. 깃이라곤 add, commit, push만 하면 되는 줄 알았다. fetch, merge... 알지만 쓸 수 없는 기능이 대부분이라 조용히 창을 끄고 말았다 ^____^ ..

이제는 더 미룰 수 없기에

공부를 할수록 정리하고 싶은 마음은 커져간다. 너저분하게 나와있는 팀프로젝트 폴더들, 3개가 될 것 같은 자바스크립트 공부 레퍼지토리.. 그래서 다시 시도해보기로 했다. 아마 10번째로 생각이 든 오늘, 사라져도 큰 타격이 없는 Repository로 시도하기로 맘 먹었다.

내가 찾은 방법은 3가지이다.

  1. subtree (성공)
  2. remote-fetch-merge (실패)
  3. rebase (시도 X)

1. subtree

subtree는 구글 검색하면 추천 검색으로 보여주는 블로그를 보고 따라했다.
일단, 이 방법을 가장 처음 알았지만 시도하고 싶지 않아 다른 블로그를 빙빙 돌았다. 너무 어려운 단어가 많았기 때문에..^^

우선 subtree라는 git 명령어 자체를 여기서 처음 보았다. 그리고 prefix?.. 거기다 = 등호까지 붙는다. 이거는 망하기 딱 좋겠다 싶어 시도하고 싶지 않았지만, 놀랍게도 이건 유일하게 내가 성공한 방법이다. 나도 성공했으니 다들 겁먹을 필요가 없다.

정말 하라는 대로 하면 성공이다.

  1. 깃허브에서 모두 하나로 모을 repository를 생성 ex) Base
  2. 이 repository, Base를 git clone
  3. cd Base를 사용해 해당 repository로 이동
  4. git subtree add --prefix=(해당 Repository 하위의 디렉터리 == Project) (옮겨올 Repository 주소) (옮겨올 Repository의 branch == main)
    git subtree add --prefix=Project https://github.com/(github ID)/Base.git main
  5. git push

error ?

  • ambiguous argument 'HEAD': unknown revision or path not in the working tree
    기존에 커밋이 없어서 그러는 경우가 있어 아무 내용이나 커밋을 한 번 해주도록 한다.

  • ![rejected] error : failed to push some refs to '레퍼지토리 주소'
    기존에 데이터가 손실될 수 있어 막은것이니, git push origin +main 명령어를 이용하여 push 하도록 한다.

BUT, ...

성공이다. 성공이긴 하다.
하지만 내가 원했던 것은 커밋했던 날짜까지 모두 제 날짜로 합치는 것이었다. 이 방법으로 레퍼지토리들을 합치면 커밋 기록 날짜가 모두 오늘 날짜로 변경된다. 수십 수백개의 커밋들이 모두 오늘로 기록된다. 이건 내가 원하던 것이 아니었기 때문에 git push를 reset하고 다른 방법을 시도했다.


2. merge

또 다른 블로그의 도움을 받기로 했다. 그래도 아는 명령어가 많으니 수월하겠다 생각했지만, 결론부터 말하자면 실패다.

git push를 reset하는 것부터 애를 먹었기 때문에 (커밋, 푸시 취소 관련도 추후에 정리하겠다) 약간 골이 아파왔지만 어찌저찌 reset을 성공했고, push까지 성공했지만 마지막에 md file이 충돌했다.

왜?

나는 분명 Base 폴더를 만들고 Project 폴더로 위치를 이동, Project 폴더에서 작업을 진행했지만 결과는 Base 폴더 자체에 merge가 되었다.
왜 그런지는 알 수가 없다.. 아직^^.... 차차 알게 되겠지


일단 다른 방법을 시도하기엔 오늘 깃에만 너무 많은 시간을 투자하기 때문에 깃 병합은 또 다음 시간에 시도해보겠다. 그래도 한 가지 방법은 성공했으니 기쁘게 생각해야지! 꺄호~

profile
겅부하자

0개의 댓글