일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Cypress
- async/await
- 무한 스크롤
- useAppDispatch
- 타입 좁히기
- app router
- 투포인터
- map
- React
- dfs
- SSR
- TS
- 인터섹션
- 반공변성
- 결정 알고리즘
- tailwind
- CI/CD
- autosize
- ESlint
- 이분 검색
- Jest
- 태그된 유니온
- 공변성
- webpack
- 호이스팅
- recoil
- Promise
- RTK Query
- CORS
- 리터럴 타입
Archives
- Today
- Total
짧은코딩
git 개념 정리 본문
반응형
회사에서 협업을 하는데 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^)
- HEAD^ : 최신 커밋 취소
- 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
https://www.youtube.com/watch?v=b72mDco4g78
https://lucas-owner.tistory.com/35
반응형
'개발' 카테고리의 다른 글
순환 참조 (0) | 2025.01.14 |
---|---|
React input delay 해결법 (0) | 2024.05.18 |
Comments