[Git] fork한 repository 잔디남기는 방법 (javascript-racingcar)

Lee_Sangmin·2022년 8월 23일
2

personal

목록 보기
5/9
post-thumbnail

상황

임의의 프로젝트를 fork해 작업을 한다.
commit을 하고 해당 branch에 merge가 된다면 잔디는 정상적으로 심어질 것이다.
다만, fork한 곳에 Pull Request를 날릴 수 없는 상황도 존재할 것이다.

나같은 경우는 임의 교육기관에서 진행한 수업 내용을 혼자 진행해 보았는데,
참여자도 아닌 내가 PR을 남길 수 없는 상황이었다.

잔디가 남지 않는 이유는 다음과 같다.

잔디가 남기위해 필요한 조건이 있기 때문이다.

  1. GitHub 계정과 commit한 이메일의 계정이 동일해야 한다.

  2. commit이 fork한 repository가 아닌 나만의 repository에서 이루어져야 한다.

2번이 문제였다.
일주일 가량 아무것도 하지 않은 한량으로 남을수는 없었다!

해당 문제를 해결하기위해 private repository를 새로 하나 만들어 진행했던 내용을 duplicate하여 기록을 남기는 방법을 사용하기로 했다.


해결

repository duplicate에 대한 내용은 이미 잘 정리하여 기록해 주신 분들이 많다.

다만 다음에 추가로 진행할 fork문서들에 대한 잔디 문제에 대해서 더 빠르게 해결할 수 있게 하고,
마주칠 수 있는 error들을 남겨놓기 위해 글을 작성한다.

기본적으로 duplicate repository와 관련한 명령어는 다음과 같다.

cd 작업할위치로이동

git clone --mirror 기존원격레포주소

cd 기존원격레포이름.git

git remote set-url --push origin 새원격레포주소

git push --mirror

최근에는 git과 관련한 모든 명령어는 gitkraken을 사용하던터라 오랜만의 터미널 사용이 어색했다.

본인은 WorkSpace내에서 모든 project를 관리함.
구 원격 repository의 주소: 'javascript-racingcar'.
새 원격 repository의 주소:'javascript-racingcar-personal'.
임을 알리며 다음과 같은 명령어를 입력했음을 보인다.

cd Desktop/WorkSpace

git clone --mirror https://github.com/dltkdals224/javascript-racingcar.git

cd javascript-racingcar.git

git remote set-url --push origin https://github.com/dltkdals224/javascript-racingcar-personal.git

git push --mirror

cd WorkSpace

rm -rf javascript-racingcar.git

마지막에는 더이상 필요없는 javascript-racingcar.git 폴더를 지워준다.


마주할 수 있는 error

fatal: Authentication failed for 'https://github.com/(GitHub-ID)/(구repository-name)/'

git clone을 할 때, github의 ID/PASSWORD를 입력하게 되는데 2021년 8월 이후로는 ID/PASSWORD가 아닌 일정기간 유효한 token을 통해 인증받는 방식으로 변경되었기 때문에 발생하는 에러라고 볼 수 있다.

다음과 같은 순서로 해결할 수 있다.


  1. Github Login

  1. Setting - Developer settings - Personal access tokens

  1. Generate new token 버튼 클릭

  1. Note(사용처)는 원하는대로 기록 / Expiration(만료일) 원하는대로 설정 / repo를 체크.
    이후 최하단의 Generate token클릭

  1. 생성된 토큰을 복사하여 어딘가에 적어둔다.
    (사실 제거 후 새로 생성할 수도 있기 때문에 잊어버렸다고 좌절할 필요는 없다.)

  1. 로컬 컴퓨터의 깃에 등록한다.
git config --global user.name 아이디

git config --global user.password 복사한토큰

위처럼 global에 등록하지 않고 해당 작업을 진행할 때 ID/token을 입력해도 문제 없다.



refusing to delete the current branch: refs/heads/main

Git Error "fatal: invalid branch name: init.defaultBranch ="

git remote에서 발생할 수 있는 에러로, 기존 원격주소와 새 원격주소의 init default branch name이 다를 때 발생한다.
(참조 : https://www.lesstif.com/gitbook/git-init-default-branch-name-main-129007701.html)

필자는 모든 init default branch를 main으로 작성하는 경향이 있어 다음과 같이 해결하였다.


  1. 기존 원격주소의 repo name을 main으로 수정한다.

Github 페이지 내 Repository details에서 Main branch 명을 수정하는 방법도 있지만,
kraken에서 단순히 master branch 네이밍을 main으로 수정하여도 문제 없다.


  1. 다음과 같은 명령어로 새로 작성되는 모든 repo에 대해 global init branch를 main으로 맞춘다.
git config --global init.defaultBranch main


ETC

참조

[Git] Git 사용법 및 터미널 명령어 정리

[Github]fork해온 repository잔디 심는 방법
[Git] 레파지토리 이사하기(커밋 메세지포함), 미러링 : clone, mirror

Github에러 해결법

Stack overflow : Deleting remote master branch, refused due to being the current branch

profile
FE developer

2개의 댓글

comment-user-thumbnail
2022년 8월 25일

안녕하세요 나는 준찌입니다. 글 잘 읽고 가요 ㅋㅋㅋ ㅋ 옛날에 저도 이거 고민했을때가 있었는데 안찾아보고 넘어갔었거든요.. 감사함다 상민님

1개의 답글