본문 바로가기

GitHub

[GitHub] Git Bash

********git 작업정리

1) 프로젝트 폴더에서 우클릭으로 git bash를 열고 git pull origin main 실행 -> github 원격 저장소의 최신 소스 내용을 내 로컬 저장소에 반영

2) git bash에서 git branch newbr 실행 -> newbr 라는 이름의 브랜치 생성 (브랜치 이름은 아무렇게나 상관없음)

3) git bash에서 git checkout newbr 실행 -> 로컬 저장소의 HEAD가 main에서 newbr로 변경됨

git bash에서 git branch 만 실행하면 현재 내 로컬 저장소에 있는 브랜치 목록과 HEAD로 가리키고 있는 브랜치가 보임


4) 이클립스에서 프로젝트 폴더 refresh(F5) 해주고 작업진행, 실행 안되면 maven -> update project

5) 작업이 끝났으면 git bash에서 git add . 실행 -> 로컬 저장소 newbr에서 작업한 내용 커밋 준비

6) git bash에서 git commit -m "커밋내용" 실행 -> 로컬 저장소 newbr에서 작업한 내용을 커밋함

7) git bash에서 git checkout main 실행 -> main 브랜치로 돌아옴

8) git bash에서 git pull origin main 실행 -> 내가 작업하는 사이 다른 사람이 작업 내용을 push 했을 수 있으니 pull 해줌

** main 브랜치와 newbr 브랜치의 소스에는 차이가 있음, main 브랜치에는 내가 작업했던 내용이 반영되어 있지 않음


9) git bash에서 git merge newbr 실행 -> newbr 브랜치에서 작업 후 커밋했던 내용을 로컬 main 브랜치에 합침

10) git bash에서 git push origin main 실행 -> 병합 완료된 main을 원격 저장소에 반영

11) git bash에서 git branch -d newbr 실행 -> 로컬 저장소에 있는 newbr 브랜치 삭제

** 병합이 끝난 브랜치는 바로 삭제하기



** 병합 사유 쓰라고 할 때

1. i를 누른다
3. esc를 누른다.
4. :wq를 입력한다.
5. enter를 누른다




** git 꼬였을 때 복원 커맨드

수정내용 모두 되돌리기 : git restore .
이미 add 되어버린 내용 모두 되돌리기 : git restore --staged .
깃에서 추적하지 않는 로컬에서 추가한 모든 파일 삭제하기 : git clean -f
깃에서 추적하지 않는 로컬에서 추가한 모든 폴더 삭제하기 : git clean -fd

이걸로도 답이 없으면 그냥 프로젝트 폴더 삭제하고 새 폴더 만들어서 다시 받기
git clone https://github.com/cttc-cttc/daetaworld.git



***** git 충돌났을 때 처리방법

main 브랜치에서 9)의 git merge newbr을 실행했을 때 충돌이 나면 헤드명이 main -> main|MERGING 으로 바뀜

당황하지 말고 이클립스를 보면 충돌이 난 소스파일에 빨간 점이 찍혀있는 것을 볼 수 있음

그 파일을 열면 충돌이 난 소스 부분에 아래 형식처럼 소스가 바뀌어 있음

>>>>>>>>Head
  원본소스내용1
  원본소스내용2
=============
  바꾼소스내용1
  바꾼소스내용2
<<<<<<<<newbr


1. 바꾼 소스를 적용하고 싶다고 하면 >>>>>>>>Head에서 ============= 까지의 코드를 삭제하고 <<<<<<<<newbr도 삭제해서

바꾼 소스의 내용만 있게 남기고 저장함

2. 원본 소스를 그대로 놔두고 싶다면 >>>>>>>>Head를 지우고 =============에서 <<<<<<<<newbr까지의 코드도 지우고 저장

3. 둘 다 합치고 싶다면 >>>>>>>>Head, =============, <<<<<<<<newbr 각 라인을 지우고 저장


충돌난 곳을 다 수정했으면 브랜치 main인 상태에서 바로 [git add .], [git commit -m "커밋내용"] 을 차례대로 실행하고

git push origin main까지 실행하면 충돌이 해결된 소스파일이 main에 정상적으로 올라감




** git 원격저장소에 올린 커밋 되돌리기

작업을 하다가 main에 잘못 push해버린 경우 그 내용을 삭제하고 싶을 때가 있음

그럴 땐 main 브랜치에서 아래 링크의 내용들을 참고해서 실행하면 됨

https://jmjmjm.tistory.com/57
https://suwoni-codelab.com/git/2018/04/07/Git-reflog/

git reset 혹은 git revert로 잘못 push한 내용을 삭제하는데 그것도 잘못 했을 경우

git reflog로 전체 로그를 확인해 push 시점을 되돌릴 수 있음

728x90