4월 17일) 스파르타 내일배움캠프 3일차
1. Git & Git-Hub 복습 ✔
2. 프로젝트 구현하기
- 1. 프로필 버튼을 누르면 상세창을 show해주기 구현 ✔
오늘 배운 수업내용 정리 ✔
git 복습.
프로젝트 과거 시점으로 돌아가기.
reset / revert
reset
과거의 커밋 시점으로 돌아갈 수 있으며 특징은 돌아가면 이후의 시점의 기록을 다 지운다.
git reset --hard commit해시코드
git reset --hard (해시코드가 없을 경우 마지막 커밋시점으로 돌아가게됨.
revert
과거의 커밋 시점으로 이동해서 해당 시점에서 커밋했던 내역들을 무효로 바꿔준다.
즉, 커밋은 수시로 하는게 좋음 한번에 많은 것을 했다가 revert하면 답이 없어진다.
git revert commit해시코드
;wq로 빠져나오기
revert를 했을 때 좀 오래전으로 돌아가면 위에서 겹치는 내용이 존재해서 충돌이 날 우려가 있음.
revert를 수행 후 충돌이 나면 해당 파일을 삭제나 수정을 하고 git revert --continue를 통해 마저 진행 할 수 있다.
git revert --no-commit 해시코드
revert를 하면 자동으로 커밋이 되는데 이 명령어를 이용하면 add(지정) 시점으로 revert를 수행한다.
revert를 수행하면서 다른 작업을 같이 commit하는 경우 이런 방식을 이용한다.
branch : 분기된 가지 라는 의미(다른 차원)
프로젝트를 하나 이상의 모습으로 관리해야 할 때
예) 실배포용, 테스트서버용, 새로운 시도용
여러 작업들이 각각 독립되어 진행될 때
예) 신기능1, 신기능2, 코드개선, 긴급수정 ...
각각의 차원에서 작업한 뒤 확정된 것을 메인 차원에 통합한다.
git branch : 현재 내 로컬에 저장되어있는 브랜치 목록
git branch -r : 로컬과 원격? 저장되어있는 브랜치 목록? 협업때 이거로 많이 보는듯..
git switch -c 새로운브랜치명 : 브랜치를 만들면서 동시에 이동함.
git branch -d 삭제할 브랜치명 : 브랜치를 삭제해줌.
git branch -D 삭제할 브랜치명 : 지울 브랜치에 다른 브랜치로 적용되지 않은 내용의 커밋이 있을때는
-D를 통해 강제로 삭제해 줄 수 있다.
git branch -m 변경할 브랜치명 : 브랜치의 이름을 변경할 수 있게 해주는 명령어
Branch 합치기
Merge 와 Rebase
merge(병합) : 병합을 하는 과정에서 커밋이 하나가 생겨난다.
rebase : 브랜치의 마디 커밋들을 대상 브랜치로 병합이 아닌 위에 옮겨 붙이는 명령어이다.
rebase는 브랜치의 흔적을 안남김 즉, 브랜치를 없애는 건가?
merge는 브랜치의 흔적을 남긴다. 즉, 브랜치를 유지한 상태로 병합하는 과정이다. 이어붙인다 이말임.
근데 rebase는 가지를 똑 떼다가 메인에 붙히는 과정이다.
이 두가지는 어떻게 보면 병합하는 과정은 똑같다. 하지만 Merge는 브랜치에서 작업한 커밋 내용들의 로그를
전부다 남기고 rebase는 병합하는 과정에서 커밋 로그들을 완전 제거한 뒤 깔끔하게 붙인다.
( 참고 : merge나 reabse 둘 다 병합을 해도 브랜치는 삭제되지 않고 계속해서 작업이 가능하다. )
참고로 가장 협업때는 merge를 무조건 사용하는게 좋음.
결국 main 또한 브랜치임.
즉, origin(원본)에 넣는 느낌이다.
1. merge(병합) : 병합을 하는 과정에서 커밋이 하나가 생겨난다.
git merge 브랜치명
- 참고 : 합치고 싶은 브랜치로 이동 후 git merge 합칠 브랜치명을 입력을 해줘야한다.
- 현재 브랜치 위치에 다른 브랜치를 합치는 것임. 그러니까 브랜치 이동은 필수이다.
2. rebase
git rebase main
rebase는 merge랑 반대로 이어 붙히는 느낌이라 내가 붙힐 브랜치로 이동 후 붙히고 싶은 브랜치를 입력해주면된다.
즉, main 브랜치에 new-teams브랜치를 합치고 싶다면 new-teams브랜치에서 git rebase main을 해줘야 한다.
이렇게 이어 붙히게 되면 new-teams에서 작업한 내용들이 main위로 이어 붙혀지게됨. 즉, main브랜치로 이동하면
new-teams 브랜치의 작업물의 내용 밑에 있기때문에 new-teams의 내용들을 불러오지 못하게됨.
( 이거 왜쓰는지 모르겠음.. ㅋㅋㅋ 그냥 merge가 젤 나은듯.. 어차피 이거하고 또 merge해야지 병합됨..)
git merge --abort : merge하기 전으로 돌려준다. ( 개꿀 기능 일듯..) merge중단
git rebase --abort : 위와 마찬가지로 rebase를 하기전으로 돌려준다. rebase중단
git rebase --continue : rebase시 충돌 발생할 시 해결 한 후 명령어 해주면 rebase를 해줌.
단 , rebase문제를 일단 해결해두고 add . 까지만 해야하고 continue를 해줘야함
이유는 오류가 이게 끝이 아닐 수 도 있기 때문이다??
즉, 이 명령어는 계속 이어서 진행해달라는 의미이다. 충돌난 파일은 한번씩 계속 봐줘야함.
즉, add . 까지만해야하고 commit 은 안댐.
GitHub는 Git으로 관리하는 모든 프로젝트들을 온라인 공간에 공유해서 프로젝트 구성원들이
함께 소프트웨어를 만들어 나갈 수 있게 도와주는 서비스.
배워두면 좋은 개념!
remote
origin
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 5일차 TIL( 웹 서비스 ) (0) | 2024.04.19 |
---|---|
내일배움캠프 4일차 TIL( SQL ) (0) | 2024.04.18 |
내일배움캠프 2일차 TIL( SQL ) (0) | 2024.04.16 |
내일배움캠프 1일차 TIL( Git & Git-Hub 기초 ) (0) | 2024.04.15 |
사전 캠프) CPU와 메모리 기초 (0) | 2024.04.08 |