hyperskill - Fork and pull request 영어 원문
당신이 다른 누군가의 프로젝트를 바꾸거 싶어 하거나,
누군가의 프로젝트를 당신의 아이디어를 위해 스타트 포인트로 삼으려 합니다.
당신이 해당 프로젝트의 정식 협력자가 아니라면, 프로젝트의 repo의 파일들을 조정 할 수 없습니다.
이러한 경우, Github는 당신이 contributor (기여자) 가 될 수 있게 만들었습니다.
당신은 이 repo를 fork 해야하며, 내부 내용을 수정하고,
pull request를 통해 당신이 변화시킨 내용을 제안합니다.
만약 프로젝트의 주인들이 당신이 변화시킨 내용을 마음에 들어 한다면,
그들은 원본 repository에 해당되는 내용을 넣어 줄 겁니다.
Forking a repo - repository를 Fork 하기
소프트웨어에서 Fork 라는 용어는 기존 프로그램에 영향을 미치지 않도록 따로 복사한다는 의미입니다.
본문에서 벗어나 이해를 위해 그래프를 그려 봅시다.
1. 오픈소스를 fork 한 뒤, 프로젝트의 소유자가 변화 내용을 받아 들여 줄 경우.
flowchart TD
origin1("Original Repo")
fork1("Fork Repo")
origin2("Original Repo")
origin1 --> fork1
fork1 --> origin2
origin1 --> origin2
2. 오픈소스를 fork 한 뒤, 스스로의 프로젝트의 시작점으로 사용 할 경우
flowchart TD
origin1("Original Repo")
fork1("Fork Repo")
origin2("Original Repo")
origin1 --> fork1
origin1 --> origin2
fork1 --> myrepo("My Repository")
위의 그래프에서 Original Repo를 두 개씩 넣어놨는데,
이는 Repository, 즉 저장소를 Fork 하는 경우, 그 시간의 Repo에서 분기점을 만든다고 생각하면 됩니다.
본래의 Repository는 Fork 된 뒤에도, 업데이트를 할 수 있기에 2 개씩 넣어놨습니다.
Fork한 프로젝트에 기여하고 싶다면, 1 번의 그래프의 양상을 보일 것이며,
Fork한 프로젝트를 스스로의 프로젝트 시작점으로 가져간다면, 2 번의 그래프 양상을 보일 것 입니다.
돌아와서,
fork는 repository의 복사본입니다.
fork는 원본 프로젝트에 영향을 끼치지 않고 해당 프로젝트를 자유롭게 실헙해 보게 해 줍니다.
fork를 만들기 위해, 당신은 무조건 Github에 로그인해야 합니다.
부탁하건대, 교육적 목적의 repository 를 클릭하고, 페이지의 맨 위 오른쪽에 있는 Fork 를 클릭 해 주세요.
fork를 생성 할 때 repository 이름과 description(설명)을 수정하라는 메세지가 표시 될 겁니다.
이를 완료하고 나서, Create fork 버튼을 클릭하세요.
클릭 한 후, 자동적으로 원본 repo 에 대한 당신의 fork repo로 리다이렉트 될 겁니다.
혹은, 스스로의 repositories 페이지에서 이를 찾을 수 있습니다.
Fork 는 그냥 원본처럼 GitHub 에서 호스팅되는 보통의 repository입니다.
그러므로, 당신의 fork에서 새로운 파일을 추가하거나, 조정하거나, 존재하는 파일들을 삭제 할 수 있습니다.
Branching - 브랜치 (분기)
우리가 repo의 내용에 대해 변화를 만들기 전에,
branching 이라 불리는 중요한 개념에 대해서 배워야 합니다.
branching 은 같은 시간대에서 서로 다른 버전의 repository에서 작업 할 수 있는 방식을 제공 해 줍니다.
fork 와 방식은 거의 유사하지만, 프로젝트의 관리 권한이 있어야 할 수 있는 내부적인 작업입니다.
기본적으로, 모든 repository는 main (혹은 master) 이라 부르는 branch를 가지고 있습니다.
main 은 프로젝트의 실제 버전을 표현합니다.
repo의 몇 가지 내용을 바꾸고 싶다면,
먼저, main 브랜치로부터 독립적인 스냅샷을 얻기 위해 새로운 branch를 생성해야 합니다.
main 은 중요하므로, fork와 비슷한 방식으로 새로운 분기점을 만든다고 생각하면 됩니다.
주로, branch는 기능을 표현하거나, 그 순간에 개발되고 있는 수정 사항을 표현합니다.
이는 main 브랜치를 보호하는데, 원치 않는 변화로 롤백을 해야 할 가능성에서 보호합니다.
또한, main 브랜치가 아닌 또 다른 브랜치에서 새로운 브랜치를 생성할 수도 있습니다.
Branching은 특히, 팀 개발 프로세스들을 정리하는 데 도움을 줍니다.
여러 프로그래머들이 같은 시간에 서로 다른 기능들을 작업하고 있지만, 그들 스스로의 브랜치 에서 작업합니다.
작업이 끝난 후, 코드는 서로 merge (병합) 됩니다.
지금 당신은 아마 branching에 대해 이해하기 쉽지 않기 때문에,
그저 우리의 추천을 따르며, main에서 직접적으로 작업하는 것 대신에, 특정한 브랜치를 사용하세요.
만약 당신이 Branch에 대해서 더 읽고 싶다면, Github의 짧은 아티클을 확인 해 보세요.
Modifying content in a special branch - 특정 브랜치에서 내용 수정하기
내용을 수정하기 전에, 새로운 브랜치를 만들어 봅시다.
main 브랜치를 클릭 한 뒤, drop-down 된 메뉴를 여세요.
edit-readme 와 같이 고유하며 설명적인 이름을 브랜치에 입력하세요.
그리고 Enter 를 누르거나, Create branch: name 을 클릭하세요.
방금 만든 브랜치에서 찾을 수 있는 README.md 파일을 수정 해 봅시다.
이 파일을 열고 edit (연필모양) 버튼을 클릭하거나, repo 밑에 있는 똑같은 버튼을 클릭하세요.
그 후 변화를 만들어 보세요!
예를 들어 내부에 글씨를 마구 써 보거나, 당신이 forks 혹은 branches 에 대해 배운 정보들을 써 보는 겁니다.
이러한 변화를 적용하기 위해서, 밑에 있는 Commit changes 구역으로 스크롤 하고,
당신이 작성한 변화에 대해서 의미있는 메세지를 작성하세요.
그리고 Commit changes 를 클릭하세요.
당신의 repository 내부의 edit-readme 브랜치에 만들어 낸 변화가 적용됩니다.
오리지널 repo와 당신이 fork 한 repo 의 main 브랜치는 어떠한 변화도 받지 않습니다.
그리고 나서 README.md 파일에서 변화를 찾아 보세요.
당신이 이 프로세스를 이해하는 데 있어,
동일한 branch에 서로 다른 변화를 가진 commit을 수행하는 것이 더 나을 것 입니다.
또한, 당신이 원한다면 이 repo에 파일을 생성하거나, 업로드 할 수 있습니다.
우리는 더 나아가 IntelliJ IDEA에서 몇 가지 repo의 내용을 수정하는 법을 배울 것이며,
웹 브라우저 대신 터미널을 사용하는 법을 배울 겁니다.
현재 topic 외 다른 topic에서 따로 다루겠다는 의미입니다.
Pull request (PR) - 영어로 배우는게 도움이 됩니다.
repo의 내용을 변경하고 난 후, 본래의 repository에 당신이 만들어 낸 변화를 제안하기 위해,
pull request (PR) 을 생성 할 수 있습니다.
당신이 변화를 만들 어 낸 새로운 브랜치에 있다는 것을 확실히 하세요.
현재
edit-readme
브랜치에 있어야 한다는 의미입니다.
그렇다면, main 브랜치에 병합하지 않은 commit(커밋) 의 숫자를 보여주는 메세지가 나타날 겁니다.
Contrinute 버튼을 눌러 드롭다운 메뉴를 보고, Open pull request 를 선택하세요.
또한 Sync fork 버튼이 존재하는데,
이는 당신이 fork로부터 생성한 main 브랜치 repo의 변경 사항을 가져 올 수 있게 해 주는 버튼입니다.
그리고 나서 pull request를 생성하기 위한 특수한 페이지를 볼 수 있습니다.
이 페이지에서 녹색 텍스트로 되어 있는 Able to merge 글씨를 볼 수 있는데,
이는 당신의 프로젝트 버전이 repo의 본래 버전과 충돌하지 않는다는 것을 의미합니다.
몇 가지 상황에서, 이 녹색 텍스트는 다를 수 있습니다.
그렇다는 것은 본래의 저장소가 최근 몇 개의 변화를 가졌다는 것인데 반면에,
당신은 여전히 PR을 생성하는 중이라는 의미입니다.
나중에 우리는 오리지널 repo와 당신의 fork를 동기화 하는 법에 대해 배울 겁니다.
base repository를 오리지널 repo (hyperskill/intro-to-github) 와 main 브랜치 로 확실히 지정하고,
head repository를 main이 아닌 브랜치로 지정해 두세요.
제목을 제공하고, 선택적으로 코멘트를 준 후, Create pull request 를 클릭하세요.
당신은 이 프로젝트의 repo에서 생성한 PR을 볼 수 있는데, Pull request 구역에서 볼 수 있습니다.
당신의 PR은 검토되며, 만약 당신이 제안한 변화가 받아들여진다면, 그들은 main 브랜치에 병합 할 겁니다.
그리고, PR의 상태는 closed 로 변할 겁니다.
또한, PR을 스스로 닫을 수도 (closed) 있는데,
PR을 연 후, 당신의 생각이 변화 하여, PR이 승인되기 전에 닫을 수 있습니다.
repository에 너무 많은 브랜치를 가지는 것을 방지하기 위해, 병합 후 해당 브랜치를 삭제 할 수 있습니다.
우리는 hyperskill의 원본 repo에 있어 당신의 요청에 반응하지 않을 겁니다.
놀라지 마세요 :)
PR을 자동적으로 받지 않게 설정 해 놓은 것이다. 교육 목적으로 PR을 넣을 수많은 사람을 생각하면 당연한 일입니다.
마지막으로, fork 하지 않고 새 프로젝트를 위해 완벽하게 새로운 repository를 생성 할 수도 있습니다.
이를 수행하기 위해서, 당신의 repository에 가서 New를 클릭하세요.
새로운 repository를 위한 이름을 입력하세요.
당신은 이 repo에 대해 주인으로서 모든 접근 권한을 가지고 있으므로, 변화를 만들기 위해 fork 할 필요가 없습니다.
원한다면, 스스로의 repository에서 연습 할 수 있습니다.
Conclusion - 결론
여기서 일반적으로 한 것들을 빠르게 되돌아 봅시다.
첫 번째로, 우리는 repo를 복사했습니다.
다른 말로는, 해당 repo에 대해 fork를 생성했습니다.
그리고 우리의 fork에서, 새로운 branch를 생성했습니다.
그 다음엔 새로운 브랜치 내부에서 파일에 대한 변화를 만들었습니다.
최종적으로, 우리는 fork의 새로운 branch에서 PR을 만들어 냄으로서,
우리의 조정안을 본래의 repo에 제안했습니다.
해왔던 번역 중에서 힘든 번역으로 기억에 남을 것 같습니다..
words to remember
contributor : 기부자 <<= Contribute : 기여하다
propose : 제안하다, 신청하다, 추천하다
via : ~를 통해, ~을 경유하여, 통하다
experiment : 실험, 실험하다
be prompted : 메세지가 표시되다
undergo : 받다, 견디다
synchronize : 동기화
recap : 요약, 재생시키다, ~의 요점을 되풀이 하다
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Git' 카테고리의 다른 글
Working with remote repository - Git 원격 저장소와 작업하기 (0) | 2024.05.27 |
---|---|
Help files - 도움말 페이지 (0) | 2024.05.25 |
Local repository - 로컬 레포지토리 기초 (0) | 2024.05.24 |
File descriptors and pipes - 파일 descriptor 와 pipe (1) | 2024.05.23 |
Functions and arguments - 기능과 매개변수 (0) | 2024.05.22 |