[一日30分 인생승리의 학습법] [Git] 다중 리모트를 사용하여 여러 Git 연동하기(Gitea, GitHub)

post-thumbnail


Git 다중 리모트를 사용하여 Gitea와 GitHub 연동하기
한 프로젝트에서 Gitea와 GitHub를 동시에 관리하려면, Git의 다중 리모트(remote) 기능을 사용하면 된다. 다중 리모트를 설정하면, 동일한 로컬 저장소에서 두 개 이상의 원격 저장소로 데이터를 주고받을 수 있게 된다.

여기서 진행할 순서는 다음과 같다:

  1. Gitea와 GitHub 레포지토리 리모트 설정.
  2. 각 리모트를 구분하여 push/pull하는 방법.
  3. 다중 리모트 관리 시 주의사항.

1. 사전 준비: 프로젝트 리포지토리 설정

  • 현재 Gitea의 레포지토리 (wbapp)는 master 브랜치로 연결되어 있다.
    • Gitea의 URL 예시: http://gitea-ip/your-username/app.git
  • GitHub에도 동일한 프로젝트(wbapp)를 만들고, 이를 main 브랜치로 관리하려고 한다.
    • GitHub의 URL 예시: https://github.com/nyaongdev/app.git

먼저 GitHub에 새로운 레포지토리를 생성하고, 여기에 다중 리모트를 설정하도록 하자.


2. 다중 리모트 설정하기

2.1 기존 리모트 상태 확인

로컬 저장소에서 리모트 설정을 확인하려면 터미널이나 명령 프롬프트에서 다음 명령어를 사용한다.


git remote -v

이 명령어를 입력하면 현재 연결된 리모트 목록이 나타난다. 예를 들어:


origin  http://gitea-ip/your-username/app.git (fetch)
origin  http://gitea-ip/your-username/app.git (push)

현재 origin이라는 이름으로 Gitea 리모트가 연결된 상태다.

2.2 GitHub 리모트 추가하기

이제 GitHub 리모트를 추가해야 한다. GitHub 리모트를 추가할 때는 리모트의 이름을 다르게 설정하여, 두 개의 리모트를 구분할 수 있도록 해야 한다. 여기서는 github-nyaong이라는 이름으로 GitHub 리모트를 추가할 것이다.


git remote add github-nyaong https://github.com/nyaongdev/app.git

이제 git remote -v 명령어를 다시 실행하면 다음과 같은 출력이 나올 것이다.


origin         http://gitea-ip/your-username/app.git (fetch)
origin         http://gitea-ip/your-username/app.git (push)
github-nyaong  https://github.com/nyaongdev/app.git (fetch)
github-nyaong  https://github.com/nyaongdev/app.git (push)

이제 origin은 Gitea, github-nyaong은 GitHub를 가리키고 있다.


3. 리모트를 구분하여 Push/Pull 사용하기

이제 각각의 리모트로 push와 pull 작업을 할 수 있는 방법을 살펴보자.

3.1 Gitea와 GitHub에 Push

  • *Gitea (origin)**에 push:
    
    git push origin master
    
  • *GitHub (github-nyaong)**에 push:
    
    git push github-nyaong main

각 리모트를 지정해 브랜치를 푸시(push)할 수 있다. 여기서는 Gitea에는 master 브랜치로, GitHub에는 main 브랜치로 푸시하는 방식이다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

3.2 각각의 리모트에서 Pull

  • *Gitea (origin)**에서 pull:
    
    git pull origin master
  • *GitHub (github-nyaong)**에서 pull:
    
    git pull github-nyaong main

이를 통해 각각의 원격 저장소에서 변경 사항을 로컬 저장소로 가져올 수 있다.

3.3 두 리모트에 동시에 Push하기

Gitea와 GitHub 두 리모트에 동시에 변경 사항을 push하고 싶다면, 두 리모트를 한 번에 지정하여 푸시할 수도 있다.


git push origin master
git push github-nyaong main

이렇게 명령어를 두 번 실행하여 두 곳에 동시에 변경 사항을 적용할 수 있다. 더 자동화하고 싶다면, Git 훅(hook)이나 스크립트를 작성해 한 번의 명령어로 여러 리모트로 푸시하도록 만들 수 있다.


4. 다중 리모트 사용 시 주의사항

4.1 브랜치 관리

  • Gitea에서는 master 브랜치를 사용하고, GitHub에서는 main 브랜치를 사용하는 상황이므로, 브랜치 간의 동기화가 중요하다. 이를 위해 로컬에서 적절히 checkout하고 변경 사항을 푸시해야 한다.
  • 예를 들어, master 브랜치에서 작업한 후 main 브랜치에도 동일하게 반영하려면, 브랜치 병합(merge)을 하거나 리베이스(rebase)를 사용해야 할 수 있다.

# master 브랜치에서 작업 후 main 브랜치로 병합
git checkout main
git merge master
git push github-nyaong main

이와 같이, 각 브랜치가 서로 다르게 유지되지 않도록 주기적으로 병합하여 두 리모트의 코드가 일관되도록 관리하는 것이 좋다.

4.2 충돌 관리

  • 같은 프로젝트를 여러 리모트에 동기화하다 보면, 가끔 충돌(conflict)이 발생할 수 있다. 이 경우, Git은 충돌을 해결해야 푸시할 수 있도록 하며, 이를 해결한 후에 다시 푸시하면 된다.
  • 만약 Gitea와 GitHub 양쪽에서 모두 병렬적으로 작업하고 있다면, 주기적으로 pull을 통해 양쪽의 변경 사항을 확인하고 반영해야 한다.

4.3 협업 시 고려사항

  • 만약 팀원들과 Gitea를 통해 협업하고, 개인적으로 GitHub에도 저장하고 싶다면, Gitea에서 작업한 후 GitHub에 백업하는 형식으로 생각하면 된다.
  • 모든 작업이 Gitea를 기준으로 이루어지고, 완료된 작업을 GitHub에 푸시하는 순서를 정하면 충돌을 줄이고 관리하기 쉽다.

5. 마무리

이제 하나의 프로젝트에서 Gitea와 GitHub 두 리모트를 동시에 관리할 수 있게 되었다. 다중 리모트를 사용하면 하나의 로컬 저장소에서 여러 원격 저장소로 쉽게 데이터를 동기화할 수 있어, 사내의 Git 서버와 외부의 GitHub를 동시에 사용하는 것이 가능해진다.

  • Gitea는 사내 협업을 위한 주요 원격 저장소로 사용하는 형태
  • GitHub는 개인 백업이나 외부 프로젝트 관리용으로 사용하는 형태

 

[출처] https://velog.io/@nyaong/Git-%EB%8B%A4%EC%A4%91-%EB%A6%AC%EB%AA%A8%ED%8A%B8%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EC%97%AC%EB%9F%AC-Git-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0Gitea-GitHub

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
» [一日30分 인생승리의 학습법] [Git] 다중 리모트를 사용하여 여러 Git 연동하기(Gitea, GitHub) file 졸리운_곰 2025.05.25 190
1217 [一日30分 인생승리의 학습법] [GitHub][terminal] 비밀번호 인증 에러를 토큰으로 해결하고 로그인 하기 file 졸리운_곰 2025.05.24 197
1216 [一日30分 인생승리의 학습법] [알아봅시다] 블록체인 게임들의 가능성과 미래 file 졸리운_곰 2025.04.08 199
1215 이 어지러운시대의 극복법 만화보기 file unmask 2025.04.08 267
1214 [ 一日30分 인생승리의 학습법] IT 국비교육, 쓰레기 속에서 그나마 덜 쓰레기인 곳 찾는 팁 file 졸리운_곰 2025.03.08 184
1213 [ 一日30分 인생승리의 학습법] 소프트웨어 개발하다보면 "connection reset" 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예 file 졸리운_곰 2025.03.01 165
1212 [ 一日30分 인생승리의 학습법] 기술부채(Technical Debt)는 소프트웨어 개발이나 프로젝트 과정에서, 약속된 것과 실제로 제공된 것 사이에 차이가 발생하는 것을 의미합니다. file 졸리운_곰 2025.01.23 163
1211 [ 一日30分 인생승리의 학습법] 고가용성(High Availability) 시스템을 위한 5가지 전략 file 졸리운_곰 2024.12.28 170
1210 [ 一日30分 인생승리의 학습법] 켈리 공식을 간단히 투자해 적용해 보자 - 켈리 크라이티리언과 확률적 사고의 중요성 file 졸리운_곰 2024.12.26 135
1209 [ 一日30分 인생승리의 학습법] [markdown] mermaid를 이용해서 UML 그리기 - 플로우차트 file 졸리운_곰 2024.12.01 145
1208 [ 一日30分 인생승리의 학습법] Mermaid.js 정리???????? file 졸리운_곰 2024.12.01 154
1207 [ 一日30分 인생승리의 학습법] Mermaid를 이용한 시퀀스 다이어그램 file 졸리운_곰 2024.12.01 138
1206 [ 一日30分 인생승리의 학습법] Mermaid - 코드로 순서도(flowchart) 그리기 file 졸리운_곰 2024.12.01 118
1205 [ 一日30分 인생승리의 학습법] 유니코드 그래픽 기호(심벌) Huge List of Unicode Symbols 졸리운_곰 2024.07.31 120
1204 [ 一日30分 인생승리의 학습법] PocketBase Attempt to simplify the serve command for prod : 포켓베이스 프로덕션 포트 도메인 네임 설정 졸리운_곰 2024.06.10 145
1203 [ 一日30分 인생승리의 학습법] google spreadsheet app script 로 코인 현황 : 거래소 API 접근할 때 알아두면 좋은 함수 file 졸리운_곰 2024.06.08 132
1202 [ 一日30分 인생승리의 학습법] 매크로 프로그램 정리 졸리운_곰 2024.06.08 165
1201 [ 一日30分 인생승리의 학습법] 스마트스토어 vs 아임웹 vs 카페24 file 졸리운_곰 2024.05.16 145
1200 [ 一日30分 인생승리의 학습법] 자사몰 구축 카페24 vs 아임웹 vs 스마트스토어 무엇이 좋을까요? file 졸리운_곰 2024.05.16 135
1199 [ 一日30分 인생승리의 학습법] pocketbase 시작하기 file 졸리운_곰 2024.05.14 161
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED