[Git] - fork repository에 commit 후에 잔디를 심어보자

yeom yaloo·2023년 11월 3일
0

Git에 관하여

목록 보기
1/3
post-thumbnail

중요!!

중요!! 이 작업을 다 하고 push mirror까지 한 경우에 fork한 repo에 다시 commit을 한다고 해서 이 작업이 psuh mirror로 복사한 레포지토리에 적용되지 않습니다!! 이 작업은 레포지토리를 옮길 때 쓰이는 작업이지 자동화 작업이 아니기 때문입니다!!!!!!

혹시라도 다시 포크해온 레포지토리에 새롭게 커밋한 내용이 있어서 이를 다시 잔디 심기 하고 싶으시다면 .git 파일을 지워주시고 다시 clone bare -> 해당 디렉토리로 이동 -> push mirror 해주시면 됩니다.

🤮 들어가기에 앞서서

[포크해온 레포지토리를 커밋 후 나의 깃허브에 잔디를 심고 싶다면]

포크한 레포지토리에 커밋 작업을 진행해도 내 잔디는 심어지지 않는다.

그래서 나의 잔디 심기 작업을 위해서 fork 해온 repository에 commit 했을 때도 내 깃허브에 잔디가 잘 심어질 수 있게 작업을 진행 했다.

📌참고: https://velog.io/@pgmjun/Git-Fork%ED%95%9C-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EC%9D%98-%EC%BB%A4%EB%B0%8B%EC%9D%84-%EC%9E%94%EB%94%94%EC%97%90-%EB%B0%98%EC%98%81%ED%95%98%EA%B3%A0-%EC%8B%B6%EB%8B%A4%EB%A9%B4-Git-Mirror-Push-feat.-%EC%9A%B0%ED%85%8C%EC%BD%94

간단 정리

Repository A를 Repository B로 옮기기

  1. git bash를 연다
  2. A를 clone받기
$ git clone --bare [A주소]
  1. 폴더 이동하고 B에 푸시하기
$ git push --mirror [B주소]
  1. 임시 로컬 저장소 A를 지우기
$ rm -rf [A 폴더]

해당 개념으로 이해 해주셔야 포크해온 레포지토리에 새로운 commit을 진행해도 push mirror해둔 내 레포지토리에 이 commit이 자동으로 업데이트 되지 않는다는 것을 알게 됩니다!

🧟‍♀️fork repository에 commit도 내 잔디로 가져오자

1. fork

  • fork repository 이름은 알아서 ..
  • fork repository를 생성해준다.

2. fork한 레포지토리 clone

2-1. git clone?

  • git clone [REPO_URL] [DIR]의 경우엔 원격 Git 저장소를 복제할 때 사용합니다.
    • [REPO_URL] 클론해올 저장소의 주소를 지정
    • [DIR] 로컬에 복제할 위치를 지정합니다. 생략이 가능하며 특별한 이유가 없다면 보통 생략한다.

2-2. fork해온 repository HTTPS를 복사해줍니다.

2-3. 명령어를 사용해서 fork한 레포지토리를 로컬 환경에 clone bare 해줍니다.

$ git clone --bare 여기에 복사한 주소를 넣어주세요
[example]
git clone --bare https://github.com/yeomyaloo/java-lotto-6.git

  • 해당 명령어는 git bash를 사용해서 진행했기 때문에 있는 분들은 이렇게 진행하면 됩니다.

git bash가 아닌 명령어를 사용해서 진행한다면?

  • 일단 Linux 명령어를 Windows 환경에서도 공통 사용하기 위해서 git bash를 사용하기 때문에 Windows 환경인 사람들은 다운 받아 사용하자 편리하다.
  • 그렇지 않은 경우라면 원격 환경(=깃허브에 있는 내 레포지토리)에 연결 해둔 로컬 파일(=내 컴퓨터에 있는 폴더)에 위치로 가서 명령어 터미널을 열어서 cd 로컬_파일_주소를 치고 위의 clone --bare 명령어 작업을 진행합니다!

2-4. git bash를 사용한 clone bare 작업

[명령어 입력 git clone --bare https://github.com/yeomyaloo/java-lotto-6.git]

  • 이때 로컬 환경(=본인 컴퓨터)에서 원하는 곳 어디든 해당 파일을 클론 해주면 됩니다.

[작업 후 .git 형식의 파일이 생성됨]

git clone --bare?

히스토리, 브랜치 정보만을 가지는 가벼운 복제본을 만들고 원격 저장소 백업, 공유 목적으로 사용된다.

3. .git 파일로 이동

[명령어]

cd java-lotto-6.git
  • 이동하기 전에는 main 브랜치에 있는 것을 확인할 수 있습니다.

4. Push mirror

4-1. clone --bare 한 디렉토리로 이동

  • 클론 받은 경로로(=java-lotto-6.git) 이동 후엔 브랜치가 BARE:main인 것을 확인할 수 있습니다.

4-2. 포크 레포지토리에 내용을 나의 레포지토리에 복사해오기 - push mirror 작업하기

$ git push --mirror https://github.com/userId/newRepo.git
  • 이제 java-lotto-6에 있는 자료를 newRepo에 저장합니다.

4-3 403 forbidden?

나는 이를 개인 레포가 아닌 Organization에 레포지토리로 복제 받아로려 한다. 그래서 이때 허용 범위를 설정해주지 않아서 403 에러가 나는데 이 문제를 해당 포스팅에서 자세히 해결하고 있다.


[중요!!]

해당 작업이 끝난 후에 fork repository commit을 진행해도 그에 대한 반응은 적용되지 않습니다. 새로 commit한 내용을 적용하고 싶다면 위의 과정을 똑같이 다시 진행해주셔야 합니다!!!!

1)포크 레포지토리에 새로 commit한 내용이 있고, 2)이를 다시 내 레포지토리에 복사해서 push mirror한 다음 3)잔디를 심고 싶다면?

  • 다시 아래 설명과 같이 작업을 진행해주면 됩니다.
  • git clone --bare 포크한_레포지토리_주소 로 다시 복제본을 만들고
  • cd forkRepsitory.git 만든 복제본 디렉토리로 이동해서
  • git push --mirror 커밋을_복사해올_레포지토리_주소를 이용해 다시 받아와 합니다.

fork해둔 repository에 계속 새로운 내용을 commit해도 이는 자동 적용되지 않습니다! 이를 위한 작업을 다시 진행해주셔야 합니다!!

profile
즐겁고 괴로운 개발😎

0개의 댓글

관련 채용 정보