티스토리 뷰

■ 개발이력관리 ■/Git

Git Merge Request, Git Pull Request

SAP (Study And Programming) by serpiko 2020. 10. 15. 12:38

Merge Request by GitLab

 

Merge Request(GitLab)를 통해서 작업내역 업로드 합니다.

승인자 혹은 협업하는 팀원이 코드리뷰를 통해 Master에 병합합니다.

  1. [ 작업자 ] 원본의 저장소에 Fork 하기
  2. [ 작업자 ] Fork 된 저장소를 Clone, remote
  3. [ 작업자 ] branch 생성하기
  4. [ 작업자 ] 실제 작업하기 (코딩, 문서 등)
  5. [ 작업자 ] 작업된 내역 업로드 하기 add, commit, push
  6. [ 작업자 ] GitLab - New Merge Request
  7. [ 승인자 ] GitLab - New Merge Request 확인하기
  8. [ 승인자 ] 작업자에게 코멘트 남기고 Master 에 병합하기
  9. [ 승인자 ] Master에 병합한것 취소 하기
  10. [ 작업자 ] 승인자가 Master에 병합이후, fork를 원본 저장소의 내용으로 동기화 하기
  11. [ 작업자 ] 업로드한 branch 삭제하기

1. [ 작업자 ] 원본의 저장소에 Fork 하기

공유된 원본의 upstream repository 를 자신의 저장소에 Fork 합니다.

# 공유된 원본의 저장소

# Fork 선택

# fork 한 프로젝트가 나오고 Select 클릭

# Fork가 성공적으로 되었습니다



2. [ 작업자 ] Fork 된 저장소를 Clone, remote

fork 로 생성된 저장소에서 "Clone" 을 선택하여 git URL을 복사합니다.

# 로컬 작업환경에 git clone 으로 가져올 폴더를 구성합니다. ( 프로젝트명이 포함된 저장소를 가져오기 때문에 상위루트에서 실행하면 됩니다 )

$ git clone {URL}

 

# 만약 이 과정에서 권한 문제가 생긴다면 다음의 내용 참조

Window : 제어판 > 사용자 계정 > 자격 증명 관리자 > Windows 자격 증명 관리
                    "일반 자격 증명" 에서 기등록된 GitLab 정보가 있다면 제거합니다.


# clone이 완료되면, 복사된 프로젝트 경로로 이동

$ cd {project}

# 원격저장소를 연결합니다 git remote add [단축이름:기본값 origin] [url]
$ git remote add origin http://git...

# 기 등록된 저장소가 있는경우 rm 으로 삭제합니다.
$ git remote -v  // 등록된 저장소 파악


# 저장소 삭제
$ git remote rm origin http://git

#  계정 정보 입력하는 메세지(알럿) 표시되면
$ git config --global user.email "my@email.com"
$ git config --global user.name"myname"

3. [ 작업자 ] branch 생성하기

작업자는 branch를 생성하여 작업합니다

# 브랜치 생성
$ git checkout -b {DATA/MYNAME}

브랜치를 생성할때는 이름 규칙은 관리방법 논의를 통해 효율성이 좋은 명칭으로 작성합니다.

ex) git checkout -b 20.09.18/HeoJeongJin

 

# 여기서 만약 오류가 난다면 다음의 두개의 명령어를 실행시켜주세요
$ git remote update
$ git fetch

# 생성한 브랜치를 확인해 봅니다, * 별표 표시가된 지점이 현재 활성화된 브랜치 입니다.
$ git branch -a

# (참고) 브랜치는 다음과 같이 이동 가능합니다.
$ git checkout master
$git checkout branchName

 

4. [ 작업자 ] 실제 작업하기 (코딩, 문서 등)

branch가 생성되었다면
$ git branch -a 명령어를 사용하여 branch 경로가 맞는지 확실히 확인 후, 실제 코드 작업을 합니다.

5. [ 작업자 ] 작업된 내역 업로드 하기 add, commit, push

작업이 완료된 경우, [ add, commit, push ] 를 통해 프로젝트를 git 에 업로드합니다.

# add
$ git add ./*

# commit : 관리방법 논의에서 사용된 기준을 따릅니다.
$ git commit -m "{자신의이름 / 자세한 내용}"
$ git commit -m "HeoJeongJin / 정렬기능 추가"

# push
$ git push origin {브랜치명}
$ git push origin 20.09.18/MY_BRANCH

 

6. [ 작업자 ] GitLab - New Merge Request

GitLab에 접속하여 Merge Request 합니다.

 

7. [ 승인자 ] GitLab - New Merge Request 확인

 



8. [ 승인자 ] 작업자에게 코멘트 남기고 Master 에 병합하기

 

#결과확인

9. [ 승인자 ] Master에 병합한 것 취소하기

만약 승인자가 병합한 버전을 취소 Revert 하려면 다음과 같이 합니다.



10. [ 작업자 ] 승인자가 Master에 병합이후, fork를 원본 저장소의 내용으로 동기화 하기

2020.09.22 수정

승인자가 Master에 버전을 취합하고, 작업자가 다시 작업을 하려면 버전을 동기화 해야 하는 방법은 다음과 같다.

포크 저장소가 아니라 원본 저장소를 원격 저장소로 추가한다.

 

// 로컬 저장소로 이동하여(작업하던) 현재 설정된 리모트 저장소 조회해보면
$ git remote -v
origin https://포크저장소.git (fetch)
origin https://포크저장소.git (push)

 

// 원본 리모트 저장소 추가
$ git remote add upstream http://원본저장소.git

 

// 리모트 저장소 확인
$ git remote -v  결과는 다음과 같다
origin https://포크저장소.git (fetch)
origin https://포크저장소.git (push)
upstream https://원본저장소.git (fetch)
upstream https://원본저장소.git (push)

 

// 리모트 저장소 fetch
$ git fetch upstream

 

// 리모트 저장소 merge
$ git merge upstream/master

 

// 포크 저장소로 push
$ git push

11. [ 작업자 ] 업로드한 branch 삭제하기

Master 버전을 동기화 하였다면, 기존에 작업했던 branch는 삭제 하도록 합니다.

# 먼저 저장소를 master 버전으로 변경(이동)하고

$ git checkout master

# 기존에 작업했던 브랜치를 삭제합니다
만약 브랜치 명을 모른다면 아래의 명령어를 사용하여 리스트를 확인합니다
$ git branch -a

브랜치를 삭제합니다.
$ git branch -d 20.09.18/MYNAME
$ git branch -D 20.09.18/MYNAME        => 대문자 D 는 강제적으로 브랜치 삭제합니다.

 

# 삭제가 잘되었는지 리스트 확인합니다.

$ git branch -a

Git 작업 Loop


# [ 작업자 ] 는  [ 3 ~ 6 번 ] => [ 10,11 번 ] 을 반복합니다.

3. [ 작업자 ] branch 생성하기
4. [ 작업자 ] 실제 작업하기 (코딩, 문서 등)
5. [ 작업자 ] 작업된 내역 업로드 하기 add, commit, push
6. [ 작업자 ] GitLab - New Merge Request

 

[ Merge 이후 ] 

10. [ 작업자 ] 승인자가 Master에 병합이후, fork를 원본 저장소의 내용으로 동기화 하기
11. [ 작업자 ] 업로드한 branch 삭제하기

댓글
댓글쓰기 폼