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
https://wayhome25.github.io/git/2017/07/08/git-first-pull-request-story/
https://blog.outsider.ne.kr/1247
'Coding > git' 카테고리의 다른 글
git 편집 에디터 바꾸기 (nano to vim) (0) | 2020.10.01 |
---|---|
git branch 이용, 생성, 삭제 (0) | 2020.05.14 |
git revert - 커밋 변경, reset/revert 복구하기 (0) | 2020.05.14 |
git - commit, add, pull, merge 취소 (0) | 2020.01.03 |
git, github(버전 관리 프로그램, 원격 저장소) 사용하기 (0) | 2019.11.01 |