add와 commit 상태 취소하기
Branch
Branch 생성-커밋-병합 과정
branch 관련 git 명령어
branch merge :
협업의 시작 with PR
프로젝트에 기여하기
Staging area의 파일 다시 Working Directory로 내리기 : git restore --staged {file}
Working Directory 변경사항 취소하기 : git reset --hard {c_id}
실제 내 파일 변경사항 취소하는 거 : 이전 커밋의 상태로 모든 변경사항을 돌려버린다 => 주의 : 내 시간도 취소될 수 있다
특정 커밋을 가르키는 포인터
브랜치를 딴다
[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을 가르키고 있습니다)
# 새 브런치 만들기
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는 사라지고 커밋만 남는다!
각 브랜치에서 작업 한 후 이력을 합치기 위해선 일반적으로 merge 명령어를 사용한다.
병합 진행할 때, 서로 다른 이력(커밋)에서 동일한 작업을 했을 때 confilct 발생 가능
머지방법 크게 두가지
머지를 할 때는 머지를 가져올 커밋으로 가야한다 : 마스터로 가야한다
마스터 손가락이 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 상태가 사라진다!
현재 상대가 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가 추가되었다.