Pull Request ?

협업을 위해 다른 사람이 공개해 둔 프로젝트를 가져와 직접 수정하고 프로젝트에 업데이트 하는 작업이다.

 

1. Fork

: 공동 프로젝트의 저장소를 자신의 저장소로 Fork 합니다.

: forked from [팀 / 공동 프로젝트] 처럼 Fork 한 프로젝트를 확인할 수 있습니다.

 

2. Clone & Remote

Clone

1. 자신의 저장소에서 clone or download 의 url 을 복사합니다.

2. terminal 에서 공동 프로젝트를 저장할 directory 로 이동합니다.

$ cd my_projectCopy Icon

3. 저장할 directory 에 Fork 한 저장소를 Local 에 Clone 합니다. (복사한 주소)

$ git clone https://github.com/{my_github_id}/{team_project_repository}.gitCopy Icon

 

Remote

위 과정을 진행하면 origin 이름으로 remote url이 내 저장소로 기본적으로 설정이 되어 있습니다.

나중에 팀 저장소와 내 저장소를 동기화 하기 위해 팀 저장소도 remote로 등록하는 것이 좋습니다.

$ git remote add [name] [팀 저장소 URL]

$ git remote -vCopy Icon

 

3. Branch 생성

: 자신의 Local 컴퓨터에서 코드를 추가하는 작업 Branch 를 만들어서 진행합니다.

\(\rightarrow\) 개발을 다하 보면 코드의 일부분을 변경해서 확인해보기 위해 코드를 여러 개로 복사해야 하는 일이 자주 생깁니다. 따라서 코드를 전부 복사하고 나서 원래 코드와 상관없이 독립적으로 개발을 진행할 수 있는데 바로 branch (브랜치)를 사용하는 것입니다.

# develop1 이라는 이름의 branch를 생성합니다.
$ git checkout -b develop1

Switched to a new branch 'develop1'

# 브랜치를 확인합니다.
$ git branch

* develop1
  masterCopy Icon

 

4. 수정 작업 후 add, commit, push

4.1 개발 작업을 진행합니다.

4.2 작업이 완료된 후 add, commit, push를 통해 자신의 저장소에 수정 사항을 반영합니다.

4.3 [주의] push 진행 시 branch 이름을 제대로 명시해주어야 합니다.

$ git add .
$ git commit -m "커밋 메시지"
$ git push -u origin develop1Copy Icon

 

5. Pull Request 생성

: push 완료 후 본인 계정의 github 저장소에서 위에서 생성한 branch의 Compare & pull request 버튼이 활성화 되어 있습니다.

\(\rightarrow\) 해당 버튼을 클릭하여 메시지를 작성하고 PR을 생성합니다.

 

6. Merge Pull Request

: PR을 받은 팀 공동 프로젝트 저장소 관리자는 코드 변경 내용을 확인하고 Merge 여부를 결정합니다.

 

7. Merge 이후 동기화 및 Branch 삭제

: 원본 저장소에 Merge가 완료되면 Local에 원번 저장소의 코드를 동기화 합니다.

$ git pull upstream(원본 branch 별명)Copy Icon

저는 다음과 같은 오류를 떠서 원본 저장소의 mater branch를 명시해줬습니다.

더보기

You asked to pull from the remote 'upstream', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

$ git pull upstream(원본 branch 별명) matserCopy Icon

 

: 작업하던  Local의 branch를 삭제합니다.

\(\rightarrow\) branch는 작업 당 새로 생성하여 관리하는 것이 효율적입니다. (develop1, develop2, \(\cdots\) )

$ git checkout main
$ git branch -d develop1Copy Icon

 

욱근욱