[git]git으로 협업하기

NaGyeong Park·2022년 4월 6일
0

add와 commit 상태 취소하기

Branch

Branch 생성-커밋-병합 과정

branch 관련 git 명령어

branch merge :

협업의 시작 with PR

프로젝트에 기여하기

 

add와 commit 상태 취소하기

Staging area의 파일 다시 Working Directory로 내리기 : git restore --staged {file}

Working Directory 변경사항 취소하기 : git reset --hard {c_id} 실제 내 파일 변경사항 취소하는 거 : 이전 커밋의 상태로 모든 변경사항을 돌려버린다 => 주의 : 내 시간도 취소될 수 있다

Branch

특정 커밋을 가르키는 포인터
브랜치를 딴다

Branch 생성-커밋-병합 과정


[Master]A1 커밋 -> [Master]A2 커밋 -> feature-B Branch 생성! -> feature-C Branch 생성!
아직 Master, feature-B, feature-C 모두 A2를 가르키고 있다.

B1 커밋(가지 분기) -> [feature-B] B2 커밋 -> [feature-C] C1 커밋(가지 분기)

[feature-B] B2 커밋 ->
"팀장님, feature-B 개발 다 됐습니다. Merge 해주세요!"
-> Merge feature-B
-> [Master] D1 커밋(그림엔 없지만 master은 D1을 가르키고 있습니다)

branch 관련 git 명령어

# 새 브런치 만들기
git branch {branch name}

# 브랜치 목록보기
git branch
# 출력
# $ git branch
# ice
# * master <- *모양이 현재 내가 있는 브랜치

# 브런치 옮기기
git checkout ice
# 출력 : Switched to branch 'ice'

# 한 번에 브랜치 생성 및 이동
git checkout -b {branch name}

# 브랜치 삭제
git branch -d {branch name}
# 여기서 ice를 지우면 branch는 사라지고 커밋만 남는다!

 

branch merge

각 브랜치에서 작업 한 후 이력을 합치기 위해선 일반적으로 merge 명령어를 사용한다.
병합 진행할 때, 서로 다른 이력(커밋)에서 동일한 작업을 했을 때 confilct 발생 가능

머지방법 크게 두가지

  • fast-forward
  • merge commit case

머지를 할 때는 머지를 가져올 커밋으로 가야한다 : 마스터로 가야한다

merge commit case


마스터 손가락이 3을 가르키고 있다
4번을 합치면 충돌 나겟지!

 ~/Desktop/git_test (master)
$ git merge cream
Auto-merging A.txt

# 결과창
CONFLICT (content): Merge conflict in A.txt
Automatic merge failed; fix conflicts and then commit the result.

 ~/Desktop/git_test (master|MERGING)

VScode에서 이렇게 파란색(냠냠 다좋아)가 초록색(head)로 머지가 되려고 한다고 알려준다!
초록색 위에를 보면 버튼이 있다 : git에서는 이런 기능이 없지만 vscode가 제공해주는 기능이다.


Accept Both change를 눌러준 상태
저장하고 add commit을 하면
~/Desktop/git_test (master|MERGING)에서 MERGING 상태가 사라진다!

  • branch들을 지우는 회사도 있고, 아닌 곳도 있다.
  • 가지들 이름은 보통 feature-{name}
    ex)feature-login, feature-logout

 

협업의 시작 with PR

현재 상대가 GitHub, Local에서 Repository를 생성했고
나를 collaborator로 초대해 수락한 상태이다.

그래서 나는 icecream이라는 가지에서 작업을 했고, 상대방에게 main branch로 review 해달라고 request를 보냈다!

이 가지는 base branch와 충돌이 없다고 한다!


오... 괜찮았나보다! 상대방이 main branch에 merge시켜줬다. 여기서 Delete branch를 누르면 가지도 지워진다.

 

프로젝트에 기여하기

상대방이 내 Repository를 Fork하여 master 기반으로 프로젝트를 수정하여 상대방 GitHub 프로젝트에 Branch를 push한 상태.
그 상태에서 GitHub에 Pull Request를 생성하였다.


나에게 Pull requests를 보냈다.


나는 이를 review하고, 토론을 하던가 아님 merge해주던가 한다. conflict도 없으니 merge해주겠다.
밑에 초록색 버튼 Merge pull request를 눌러준다.


Confirm merge!

이제 github에서 보면 contributor에 상대방의 계정이 뜬다.
또한 상대방이 추가한 dinner.md가 추가되었다.

profile
HAPPY 💌

0개의 댓글