[git] git을 제대로 알고가쟈

Dorong·2023년 8월 16일
0

지식+1

목록 보기
2/7
post-thumbnail

🔸 폴더에 git 설정

  • 터미널> git init

🔸 작업폴더 변경사항 staging area로 보내기 (스테이징 한다)

  • 터미널> git add 파일명 파일명2
  • 터미널> git add . (전체 다)

🔸 staging area에서 repository(저장소)로 보내기

  • 터미널> git commit -m "커밋이름"

🔸 깃 상태 확인하기

  • 터미널> git status

🔸 commit 내역 조회

  • 터미널> git log --all --oneline

🔸 vsCode 내장기능으로 git 사용하기

  • 왼쪽 git 창 들어가서
  • 변경사항에서 "+" 누르면 add
  • 위쪽 "체크버튼" 누르면 commit

🔸 최근 commit과 현재파일 차이점 조회

  • 터미널> git diff

  • j/k로 스크롤바 조작, q는 종료

  • 터미널 UI가 불편하고 스페이스 하나도 차이로 봐서 다소 풀편함

  • 그래서 더 좋은 방법이 있으니

    • 터미널> git difftool

    • 터미널에서 보기 쉬운 UI로 보여줌

    • h/j/k/l키가 방향키임

    • :q 혹은 :qa로 종료

    • git log --all --oneline로 조회가능한 커밋 아이디로

    • 터미널> git difftool 커밋아이디

    • 하면 특정 커밋 비교가능

🔹 git branch

  • 터미널> git branch 작명

  • 터미널> git switch 작명

  • 터미널> git status ===> 확인하면 branch에 있음을 보일 수 있음

  • 똑같이 add, commit

  • 돌아가려면 git switch main (환경에 따라서 master일 수도 있음)

  • 돌아가면 branch에서 생성, 수정한 파일이 사라짐

  • 각 branch에서 여러번 커밋해보고

  • git log --online --all --graph 하면 그래프식으로 변경 사항 보여줌 ==> 여기서 HEAD는 현재 branch 위치

  • 이제 branch에서 main으로 합치고 싶다면? (Merge)

  • main branch로 이동하고

  • 터미널> git merge 합칠브랜치명

    • 근데 각각 다른 파일을 커밋해두었다면 그대로 합쳐짐
    • 근데 같은 파일을 수정해브렀다?? => 충돌엔딩
      • 해결법
      • 충돌한 내용이 파일에 뜨는데
      • 원하는 코드만 남겨두고 (vscode에서는 버튼 형식으로 선택할 수도 있음)
      • 다시 git add, commit
  • branch를 합쳐도 branch는 남아있음

    • 지우고 싶다면 git branch -d 브랜치명
    • merge 안한 브렌치 삭제는 git branch -D 브랜치명

🔹 몇가지 merge 방법

  1. 3-way merge
    • 일반적으로 발동되는 merge
    • 각 branch의 commit을 합쳐서 새로운 commit
  2. fast-forward merge
    • 새로 생성한 branch만 수정, main에는 수정이 없다면
    • 새로 생성한 branch가 main이 됨
    • git merge --no--ff 하면 강제로 3way로 merge
  3. rebase 써도 합칠 수 있어요
    • rebase로 branch의 시작점을 main의 끝으로 가져옴
    • 이후에 fast-forward merge로 합침
      • 비슷한데 왜 쓰나요?
      • branch가 너무 많은데 merge하면 git log 출력이 복잡해짐
      • 이 때 간단한 수정 이렇게 하면 좀 깔끔해짐
      • but conflict가 많이 발생할 수 있으니 주의하자
    • 일반적 merge는 main branch로 이동해서 merge 하지만
    • rebase는 신규 branch에서 실행
      1. 새로운 브랜치로 이동
      2. git rebase 중심브렌치명
      3. 중심 브렌치로 이동
      4. git merge 새로운 브렌치명
  4. squash and merge
    • 나중에 3way 많이하면 복잡해질거임
    • main 브랜치에서
      • git merge --squash 새브랜치
      • 이렇게 하면 새 브랜치의 커밋을 다 합쳐서 메인 브렌치에 커밋해줌
      • git log하면 사이드브렌치에서 한 자잘한 커밋들이 나오지 않게됨
profile
🥳믓진 개발자가 되겠어요🥳

1개의 댓글

comment-user-thumbnail
2023년 8월 16일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기