[강의] Git_자유자재로 활용하기

김하은·2023년 10월 25일
0

코드잇 강의 정리

목록 보기
30/60
post-thumbnail

자유자재로 활용하기

git reset을 하고 나서 돌아오려면?

  • reset을 해도 그 이후의 커밋들이 삭제되는 건 아님!
  • git reflog: reference log, 헤드가 이때까지 가리켜왔던 커밋들을 기록한 정보
    git reset HEAD@{1}

커밋 히스토리를 보는 다양한 방법

  • git log --pretty=oneline --all: 모든 브랜치의 커밋 히스토리를 보여줌
  • --graph: 커밋 히스토리가 각 브랜치와의 관계가 잘 드러나도록 그래프 형식으로 출력
    git log --pretty=oneline --all --graph
    • *: 커밋 하나
    • 합쳐지는 곳: 머지 커밋

Git을 GUI 환경에서 사용할 수 있게 해주는 프로그램

Sourcetree
GUI 프로그램들

깔끔한 커밋 히스토리를 원할 땐 git merge 대신 git rebase

  • git rebase: 베이스를 다시 지정하다 -> 커밋을 재배치하다
    git rebase 테스트_브랜치: 즉, 프리미엄 브랜치의 베이스를 테스트 브랜치로 재지정한다는 뜻
    원하는 내용으로 수정
    git add .
    git rebase --continue: 컨플릭트가 발생해서 제대로 진행되지 못한 리베이스를 계속 진행하라는 뜻

  • merge와의 차이점
    • rebase는 새로운 커밋을 만들지 않음
    • rebase로 만들어진 커밋 히스토리는 merge로 만들어진 커밋 히스토리보다 좀 더 깔끔함

작업 내용 임시 저장하기

  • git stash
    • working diretory에서 작업하던 내용을 깃이 따로 보관하는 것
    • 최근 커밋 이후로 작업했던 내용은 모두 스택에 옮겨짐
    • 따라서 working directory 내부는 다시 최근 커밋의 상태로 초기화 됨
      보관 장소: stack -> 어떤 데이터를 저장하는 구조
  • git stash list: 스택에 잘 들어갔는지 확인하는 법
  • git stash apply [작업 내용 아이디]: 스택에 있는 내용을 다시 working directory 로 가져와서 적용하면 최근에 저장한 작업물을 가져옴
  • 어떤 브랜치에서 하던 작업을 아직 커밋하지 않았는데 다른 브랜치로 가야하는 상황에서 작업 중이던 내용을 잠깐 저장하고 싶을 때 사용함

잘못된 브랜치에서 작업하고 있었다면?

  • git stash: 잘못된 브랜치에서 작업했을 때
  1. git stash로 stack에 작업 내용을 저장하기
  2. 올바른 브랜치로 가서 git stash apply 하기
    git stash apply stash@{0}
    파일 내에서 충돌 해결
  • git stash drop [작업 내용 아이디]: 스택의 작업 내용 삭제하기

적용한 작업 내용은 스택에서 없애기

  • git stash pop [작업 내용의 아이디]: 특정 작업 내용을 적용함과 동시에 그것을 스택에서 제거함

필요한 커밋만 가져오는 git cherry-pick

  • git cherry-pick [원하는 커밋 아이디]: 자신이 원하는 작업이 들어있는 커밋들만 가져와서 현재 브랜치에 추가하는 것

여러 커밋을 하나의 커밋으로 만들기

  • 만약 커밋을 여러개 했는데 맘에 드는 코드를 짜서 이전 커밋들이 필요 없으면
  • 커밋을 하기 전으로 reset을 통해 돌아간다.
  • 이때 --soft 또는 --mixed 옵션을 써서 현재 짠 마음에 드는 코드는 working directory에 남겨 놓는다.
  • 다시 add, commit을 한다.
  • 불필요한 커밋을 없앴다.

git이 무시하는 파일들

  • working directory 안에 있음에도 불구하고 Git에 의해 그 존재 자체가 무시되는 파일들이 있음
  • .gitignore 파일
    • working directory 내에 존재하는 파일들 중에서
    • 마치 존재하지 않는 것처럼 Git이 인식해야할 파일들의 목록이 적힌 파일
  • working directory에서 버전 관리를 할 필요가 없는 것들이 있다면 .gitignore 파일에 그 이름을 추가하고 버전 관리를 시작하기
  • 어떤 파일들을 무시해야할지 잘 모르겠다면 GitHub에서 기본으로 제공하는 각 플랫폼 또는 프로그래밍 언어별 .gitignore 파일을 참고하기
profile
아이디어와 구현을 좋아합니다!

0개의 댓글