본문 바로가기

Coding/git

git pull requests 사용법

github pull requests(PR) 하는 방법이 익숙치 않아서 정리!

 

1. 다른 사람이 진행중인 프로젝트에 pull requests를 해야할 때

- 타겟 프로젝트의 저장소를 자신의 저장소로 fork 한다(github repository 맨 위 오른쪽에 fork 누르기)

- fork가 완료되면 자신의 계정에 새로운 저장소가 생긴다

2. clone, remote 설정 

- 오른쪽에 "Clone or donwload" 버튼을 눌러 나타나는 url 복사하기

 

- 터미널 열기(mac기준, windows는 git bash를 열면 될 듯 하다)

- 자신의 컴퓨터에 작업하기 위해 fork한 저장소를 로컬에 clone

git clone https://github.com/ug-kim/CS231n.git

 

- 로컬 저장소에 원격 저장소를 추가한다.

# 원격 저장소 설정 현황 확인방법
git remote -v

 

 

- 위와 같이 확인되면 원격 저장소 연결된 것이다.

 

 

3. branch 생성

- 자신의 로컬 컴퓨터에서 코드를 추가하는 작업은 branch를 만들어서 진행한다.

더보기

 

개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. - pro git book

 

- develop라는 이름의 새로운 branch를 만들었고, master 포함해서 2개의 브랜치가 존재함을 알 수 있다.

 

 

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

- 코드를 수정한 후, 수정한 코드를 remote repository에 반영하고 싶으면 add, commit, push를 이용해 github repository (origin)에 수정사항을 반영한다.

- push 진행 시 branch 이름을 명시해주어야 한다.

 

git add .
git commit -m "commit message"
git push origin develop

 

- push 요청을 하면 user name과 password를 요구하는데, github user name과 github password를 입력해주면 된다.

 

* 추가) git add의 종류

git add -A - stages all change

git add . - stages new file and modifications, withoug deletions

git add -u - stages modifications and deletions, without new files

- git add *.c - 확장자가 c 파일(.c)인 모든 파일일 add 한다

 

여기서는 새로운 파일이나 변화를 repository에 반영하고 싶었기 때문에 git add .를 사용했다.

 

git status로 파일 목록을 보고 원하는 파일만 git add FILENAME

git add -p - git add . 를 진행하면 untracked 파일, 즉 디버깅 메세지를 출력하거나 임시로 수정하는 듯 커밋에 넣지 않아야 하는 내용이 추가될 수 있다.

그래서 스테이징을 하는 변경사항을 확인하면서 작업하는 것이 좋고 실수를 방지할 수 있다.

git add -p를 하면 modified된 파일의 수정 부분을 단위별로 나누어서 추가할지 안 할지 물어본다. 여기서 보이는 변경사항의 하나의 단위를 hunk라고 부른다. 이 hunk 단위로 추가할지 말지를 정할 수 있다.

?를 입력하면 다음과 같은 명령어를 볼 수 있다.

y를 누르면 해당 Hunk를 스테이징에 추가한다.

n을 누르면 추가하지 않고 다음 hunk를 보여준다.

q를 입력하면 add 과정을 종료한다.

s를 입력하면 hunk 단위를 더 잘게 쪼개준다.

 

* 추가) git commit -v

- git commit -v - git add -p와 마찬가지로 커밋하는 변경사항을 다시 한 번확인하려는 의도이다. 커밋메세지를 입력하는 화면 아래에 코드 diff가 한 번 더 나오게 된다. 한번 더 커밋하는 변경 사항을 확인할 수 있다.

5. Pull Request 생성

- push 완료 후 본인 계정 github repository에 들어오면 compare & pull request 버튼이 활성화 되어있다.

해당 버튼을 선택하여 메세지를 작성하고 PR을 생성한다.

 

6. Merge

- repository 담당자가 자신일 경우(혼자 진행하는 프로젝트): conflict 되는 코드가 없다면 순서대로 Pull request를 처리하고 merge 해주면 된다.

- repository 관리자가 자신이 아닐 경우(회사 프로젝트): PR을 받은 원본 저장소 관리, 즉 회사 프로젝트 담당자가 코드 변경내역을 확인하고 merge 여부를 결정한다.

 

8. branch 삭제

- 원본 저장소에 merge가 완료되면 로컬 코드와 원본 저장소의 코드를 동기화한다.

- 작업하던 로컬의 branch를 삭제한다.

# 코드 동기화
git pull remote-name

# branch 삭제
git branch -d develop

- pull request를 통해 remote-name이라는 별명을 가진 remote repository와 동기화를 해준다.

- git branch -d develop를 통해 develop라는 별명(이름)을 가진 branch를 삭제해준다.

 

 

 

출처: https://stackoverflow.com/questions/572549/difference-between-git-add-a-and-git-add

 

Difference between "git add -A" and "git add ."

The command git add [--all|-A] appears to be identical to git add .. Is this correct? If not, how do they differ?

stackoverflow.com

https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/

 

git 초보를 위한 풀리퀘스트(pull request) 방법 · 초보몽키의 개발공부로그

개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다. - pro git book

wayhome25.github.io

https://blog.outsider.ne.kr/1247

 

git add -p 와 git commit -v 의 사용 :: Outsider's Dev Story

얼마 전에 트위터에서 `git add -p`랑 `git commit -v`에 대해서 올렸더니 생각보다 반응해 주시는 분들이 있어서 정리해야겠다고 생각했다. git을 쓰면 파일을 변경한 후 stage 영역에 추가한 후 커밋을 하는 과...

blog.outsider.ne.kr