git은 개발자에게 필수적인 버전 관리 도구 입니다.
로컬레포지토리 및 리모트레포지토리 간의 상호작용 충돌해결, 기록확인 등에 대해
알아보겠습니다.
- 로컬과 리모트 레포지토리의 관계
: git push - 로컬레포지토리 -> 리포트레포지토리로 업로드 할 때 사용
: git pull - 리모트레포지토리 -> 로컬레포지토리로 최신 상태를 가져와 로컬에 반영
- 다중 사용자 환경 충돌
: 문제 발생: 동일한 리모트 레포지토리를 사용하는 두 개발자가 각각 커밋 후 푸쉬를 시도할 때, 먼저 푸쉬한 개발자 B의 기록이 리모트에 반영되면 개발자 A는 푸쉬할 수 없습니다.
: 해결 방법
. git pull 명령을 실행하여 리모트 레포지토리의 최신 상태를 가져옴
. 가져온 변경 사항을 로컬레포지토리와 병합 (git merge) 함
. 충돌이 있따면 충돌을 해결한 뒤 새로 커밋 / 푸쉬
- git fetch + git merge = git pull
: git fetch - 리모트레포지토리의 변경 내용을 가져오기만 함 (무슨내용이 바꼈는지 확인 할 때 사용)
: git merge - 가져온 내요을 로컬에 반영
: git pull - 두 명령어의 조합으로 리모트 변경사항을 가져와서 확인하고, 병합까지 수행함
- 사용시점.?
: 리모트 브렌치의 변경사항을 검토 / 확인하고 병합 여부를 결정할 때 사용
- git diff
: git fetch 로 변경사항을 확인했다면, 두 커밋의 차이를 확인하거나 브랜치 간의 차이를 분석 할 때 사용
: git diff [로컬브랜치][리모트브랜치]
- git blame
: commit한 git들을 누가, 어떤 commit를 했는지 확인 할 때 사용 / 코드 작성자 추적
: git blame [파일명] - 특정 파일의 코드 작성자 추적
: git show [commitID] - 특정 커밋의 상세내용을 보여줌
- 커밋을 취소하는 방법
: git revert [commitID] - 리모트에 올라간 커밋을 취소(되돌리기). 새로운 "되돌리기 커밋"을 생성하여 과거상태로 되돌림
- 여러개의 커밋을 한번에 되돌리기
: git revert [시작 commitID]..[마지막commitID]
: 시작 commitID는 포함되지 않으며, 마지막 commitID까지 되돌림
. 즉 3-5를 하면, 4,5번째는 되돌리기
- git reset / git revert 의 차이는.?
: git reset - git reset를 하면, 로컬레포지토리의 커밋이 예전으로 되돌아감
. 리모트레포지토리의 상태가 로컬레포지토리보다 최신상태이면, 로커레포지토리에서 git push를 할 수 없음
. git pull 하라고 오류가남.
. 리모트레포지토리 / 로컬레포티토리의 커밋 상태가 5번이 최신커밋이면 git reset로 하면 4번으로 돌아감
. 즉, 로컬레포지토리는 4번 ,리모트레포지토리는 5번이라 push를 하면 5번을 pull받아야함.
: git revert - 리모트레포지토리에도 반영 가능한 새로운 "되돌림커밋"을 생성
. 로컬레포지토리, 리모트레포지토리 모두 5번이 최신커밋 상태에서 git revert를 하면 6번의 새로운 커밋이 생기고
상태는 4번과 동일한 상태로 돌아감
'IT > Git' 카테고리의 다른 글
git 정리 (0) | 2025.04.25 |
---|---|
git reset 심화편.. (0) | 2025.04.16 |
git status, add, reset 등 git 기본 (0) | 2025.04.16 |
Git 이란.? (0) | 2025.03.25 |