반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

git 개념 정리 본문

개발

git 개념 정리

5_hyun 2024. 5. 1. 18:38

회사에서 협업을 하는데 git에 대한 개념이 좀 부족하다고 느껴서 몰랐던 개념들에 정리하고자 이 글을 작성한다.

git worktree와 stash

  • git worktree
    • 한 레포지토리에서 여러 개의 작업트리를 관리하기 위해 사용하는 명령어
    • 일반적으로 레포지토리 안에 있는 여러 브랜치를 각각 하나의 worktree라고 생각하면 된다.
  • git stash
    • 자신이 한 브랜치에서 작업을 완료하지 않는 상태에서 다른 작업이 생기면, 완료되지 않은 코드를 commit 하는 것은 좋지 않다.
    • 따라서 stash를 활용해 마무리하지 않은 작업을 스택에 잠시 저장할 수 있다.

git fetch와 pull

우선 fetch와 pull의 가장 큰 차이는 병합(merge) 처리 여부이다.

  • git fetch
    • fetch는 원격 레포지토리에서 최신 commit 코드를 이름없는 임시 브랜치로 내려받고 병합을 하지 않는다.
    • 결국 개발자가 수동으로 직접 merge/rebase를 진행해야 한다.
    • 원격 레포지토리가 로컬 레포지토리에 비해 더 최신 커밋이 존재할 때 이용
  • git pull
    • pull은 원격 레포지토리로부터 최신 커밀들을 내려받아서, 현재 로컬 브랜치와 자동으로 병합을 진행한다.
    • pull은 내부적으로 fetch와 merge의 과정을 포함하고 있는 것이다.
    • 원격 레포지토리와 로컬 레포지토리의 변경 사항이 다를 때, 코드를 비교/대조하고 merge 시 이용

git merge와 rebase

결과적으로 merge와 rebase의 결과는 같아야 한다.

  • git merge

 

  • 커밋했던 기록 줄기들이 모두 보존된다.
  • 커밋 히스토리가 모두 남아있다는 장점이 있지만, 줄기가 복잡해질 수 있다는 단점이 있다.
  • rebase

  • rebase는 사진에서 보이듯이 줄기가 하나로 합쳐진다.
  • 기존 커밋들이 복사되어 하나의 줄기로 연결되는 것이라서 커밋 id가 달라지게 된다.
  • 줄기를 하나로 합쳐서 히스토리 파악을 하기 쉽지만, 커밋 이력을 정확하게 기록하지 않아서 문제가 될 수도 있다.

git reset과 revert

reset, revert 모두 이전 커밋으로 되돌린다는 점은 동일하다.

  • git reset
    • 커밋을 취소하는 명령어이며, staging 취소도 가능하다.
    • 옵션
      • --soft: 커밋 취소, Staging 상태 유지(add)
      • --mixed: 커밋 취소, Staging 취소, local은 변경 상태로 유지 (옵션설정 없을 시 default)
      • --hard: 커밋취소, Staging 취소, local 변경 상태 취소
      • HEAD 옵션 위의 3가지 옵션뒤에 사용한다. (--soft HEAD^)
        1. HEAD^ : 최신 커밋 취소
        2. HEAD~(수량) : 수량에 숫자를 적으면 해당 숫자만큼 최근 커밋부터 해당 숫자까지 커밋 취소.
  • git revert
    • 특정 커밋 이력으로 되돌리기 위해 사용한다.
    • revert 했다는 이력이 남게 된다. 

-revert 명령어

git commit -m "1번 커밋"
git commit -m "2번 커밋"
git commit -m "3번 커밋"

git revert [1번commit hash]

 

-git log

Revert "1번 커밋"
3번 커밋
2번 커밋
1번 커밋

이렇게 revert 했다는 log가 찍힌다.

 

-출처

https://velog.io/@msung99/push-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EA%B9%83%ED%94%8C%EB%A1%9C%EC%9A%B0-pull

 

[Git] fetch 와 Pull 의 차이점은?

이번 포스팅에서는 원격 저장소에서 커밋들을 로컬 저장소로 내려받을 때 사용하는 pull 과 fetch 명령의 차이점을 알아보겠습니다.

velog.io

https://www.youtube.com/watch?v=b72mDco4g78

https://lucas-owner.tistory.com/35

 

[Git] Git (reset, revert) 정리 및 개념

Git 명령어 - reset, revert 개념 및 정리 - git 을 사용하다 보면 다양한 상황이 발생하는데, 그중에서는 정말 무시무시한 일이 발생 할 수도 있다. 예를 들자면, RollBack을 해야 한다거나, Conflict 가 났

lucas-owner.tistory.com

 

728x90
반응형
Comments