오늘은 어제 진행한 필수 과제를 이어서 하고 도전 과제까지 진행했다.
어제 진행한 내용: 나만의 작업 공간 만들기(Branch 생성), PR(Pull Request), Code Review & Merge
git switch -c feature/jimin # 브랜치 생성 + 이동 git branch feature/jimin # 브랜치 생성(이동X)
git push -u origin feature/jimin*-u 덕분에 이후엔 그냥 git push만 써도 됨




(튜터님께서 approve 도 사용해보라고 하셔서 사용해보았다.)
HTML 구조 변경 충돌 시나리오
<상황>

사진에서 가운데가 개발자 A
사진에서 오른쪽이 개발자 B
충돌 발생하였고 우리는 Github 내에서 해결하였다.
최종 해결된 버전(사진에서 왼쪽)
1) PR 페이지에서 Resolve conflicts 버튼 클릭
2) index.html 충돌 표시(<<<<<<, ======, >>>>>>)를 정리
3) Mark as resolved
4) Commit merge
5) PR이 다시 Able to merge로 바뀜 -> Merge
git switch main
git pull origin main
git switch hotfix/jimin #임의로 내가 설정한 브랜치명
git merge main # 여기서 충돌 나면 파일 열어서 해결
git add index.html
git commit -m "시나리오3: 충돌 해결 완료"
git push
다시 PR 페이지 보면 충돌 해결되어 Merge 가능
내가 맡은 시나리오3은 github에서 해결했지만 시나리오2를 맡으신 팀원분은 로컬에서 해결하였다. 이 과정에서 팀원분을 도와주면서 내 실력도 늘게 된 것 같다.
1)
git switch feature/jimin
2) main 최신 내역 가져오기(fetch)
git fetch originfetch는 원격 상태를 로컬에 업데이트만 하고 내 코드에 합치진 않음
3) rebase 실행
git rebase origin/main
git push --force-with-lease origin feature/jimin
- rebase는 커밋 해시가 바뀌어서, 그냥 push가 안 될 확률이 큼. 그래서 안전한 강제푸시 옵션 사용
- --force-with-lease는 내가 마지막으로 본 원격 상태랑 다르면 막아줘.라서 --force보다 안전함

3-2.1) 충돌 파일 확인
git status
3-2.2) 충돌 파일 열고 해결
3-2.3) 해결한 파일 add
git add . #또는 특정 파일만 git add 파일명
3-2.4) rebase 계속
git rebase --continue
git rebase --abort
4) 잘 됐는지 확인
git log --oneline --decorate --graph -15
- 내 커밋들이 origin/main 위에 올라가 있으면 성공



