공부한 이유
프로젝트 진행시, 깃허브 main 브랜치에서 관리하는데 충돌이 났을 때 해결방법을 몰라서 공부하게 되었다.
1.git 초기 설정 :
git config --global user.name "(본인 이름)"
git config --global user.email "(본인 이메일)"
확인하기 위해서는
git config --global user.name
git config --global user.email
2. 프로젝트 시작 & git 관리 시작
git init
: .git 파일이 생성되면서 git 관리 시작됨
※ .gitignore 파일을 이용해 보안상 민감하거나, 자동으로 생성되는 파일 등을 git 관리에서 배제할 수 있다.
3. git commit 하기
git status
git add .
git commit -m "FIRST COMMIT"
git log
→ git log로 확인해보기 , git commit 만 실행시 Vi 입력모드 실행 됨 ( i(입력시작) + 커밋 메시지 작성후 esc버튼 + :wq(저장하고 나가기) 누름)
4.Git에서 과거로 돌아가는 두 방식
- reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다
- revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.
▶ reset 사용해서 과거로 돌아가기
git log
git reset --hard (돌아갈 커밋 해시)
git log해서 돌아가고 싶은 커밋의 해시 복사
▶revert 사용해서 과거로 돌아가기
git log
git revert (되돌릴 커밋 해시)
▶커밋해버리지 않고 revert하기
git revert --no-commit (되돌릴 커밋 해시)
이전으로 돌아갔지만 커밋되지는 않음, 다른 작업을 추가한 다음 함께 커밋가능함
5. 브랜치 생성 / 이동 / 삭제하기
git branch ys
: ys branch 생성
git branch
: 브랜치 목록 확인
git switch ys
: ys branch로 이동, 최근 checkout 명령어가 switch, restore로 분리
git branch -d (삭제할 브랜치명)
: 브랜치 삭제하기
6. 서로 다른 브랜치를 합치는 두 방식
- merge : 두 브랜치를 한 커밋에 이어붙인다.
- 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식이다.
- 다른 형태의 merge에 대해서도 이후 다루게 될 것이다.
- rebase : 브랜치를 다른 브랜치에 이어붙인다.
- 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합하다.
- 이미 팀원과 공유된 커밋들에 대해서는 사용하지 않는 것이 좋다.
▶ merge로 합치기
git merge ys
: main 브랜치에 ys 브랜치 병합
※ merge는 reset으로 되돌리기 가능
merge된 브랜치는 삭제
git branch -d ys
▶ rebase로 합치기
ys 브랜치를 main 브랜치로 rebase
1. ys 브랜치로 이동
git switch ys
2. rebase 하기
git rebase main
3. main 브랜치로 이동 후 아래 명령어로 ys의 시점으로 fast-forward
git merge ys
4. 브랜치 삭제
git branch -d ys
7. 충돌 해결하기
브랜치간 충돌 : 파일의 같은 위치에 다른 내용이 입력된 상황
▶ merge 충돌시
git merge ys
명령후, 브랜치간 충돌한다면
해결 가능 시 충돌 부분을 수정한 뒤 git add ., git commit으로 병합 완료
해결이 어렵다면, 중단
git merge --abort
▶ rebase 충돌시
git rebase main
명령후, 브랜치간 충돌한다면,
해결 가능 시
- 충돌 부분을 수정한 뒤 git add .
- 아래 명령어로 계속
git rebase --continue
충돌이 모두 해결될 때까지 반복
해결이 어렵다면, 중단
git rebase --abort
8. pull 할 것이 있을 때 push를 하면?
-
- git pull --no-rebase - merge 방식
- 소스트리에서 확인해보기
- reset으로 되돌린 다음 아래 방식도 해보기
- git pull --rebase - rebase 방식
- pull 상의 rebase는 다름 (협업시 사용 OK)
- git pull --no-rebase - merge 방식
- push하기
추가) git에서 특정 브랜치만 clone하는 방법
git clone -b {branch_name} --single-branch {저장소 URL}
ex) ys branch만 clone하고 싶으면, git clone -b ys --single-branch https://github.com/movieCommunity.git
참고한 자료
강의
제대로 파는 Git & GitHub - 깃 끝.장.내.기 - YouTube
블로그
제대로 파는 Git & GitHub (무료 파트) | 얄코 (yalco.kr)
제대로 파는 Git & GitHub (무료 파트)
어려운 프로그래밍 개념들을 쉽게 설명해주는 유튜브 채널 '얄팍한 코딩사전'. 영상에서 다 알려주지 못한 정보들이나 자주 묻는 질문들의 답변들, 예제 코드들을 얄코에서 확인하세요!
www.yalco.kr
댓글