반응형 [개발] 형상관리8 [Git] 커밋한 소스가 롤백된 경우의 처리 상황A는 피쳐 브랜치에서 개발 브랜치로 병합을 했습니다.B는 개발 브랜치에 병합하는 과정 중 A 가 작업했던 이력을 롤백시켜 병합을 했습니다. 이 때, A의 코드를 어떻게 개발 브랜치에 되돌릴 수 있을까요? 고민개발 브랜치에 이미 A의 커밋이 존재하기 때문에 체리픽을 할 수 없습니다.revert를 하자니 B의 병합 시점 이후에 추가된 커밋들이 많아 불가능 합니다.reset은 협업하는 깃에서는 사용을 지양해야 합니다.리셋하고 강제 푸시를 하게 되면 다른 사람들의 브랜치의 헤드와 리모트 헤드가 달라지면서 소스가 꼬입니다. 해결중요한 것은 새로운 커밋을 만들어야 하는 것입니다.그래서 아래와 같은 절차로 진행하여 해결했습니다.새로운 피쳐 브랜치를 생성A의 커밋과 똑같이 소스 코드를 수정 후 커밋 (새로운 커밋이.. 2024. 7. 3. Git Rebase Git에서 `rebase`는 기본적으로 한 브랜치의 변경 내용을 다른 브랜치에 적용하는 과정입니다. 이를 통해 깔끔한 선형적인 커밋 히스토리를 유지할 수 있습니다. `rebase`와 `merge`의 가장 큰 차이점은 히스토리의 표현 방식에 있습니다. Git Rebase의 기본 개념 커밋 히스토리의 재배열 `rebase`는 기존 브랜치의 커밋들을 임시로 저장한 후, 대상 브랜치의 최신 커밋 다음으로 이 커밋들을 하나씩 적용합니다. 이렇게 하면 마치 해당 변경사항이 대상 브랜치의 최신 상태에서 시작된 것처럼 보이게 됩니다. 충돌 해결 `rebase` 과정 중에 충돌이 발생할 수 있습니다. 이때는 수동으로 충돌을 해결하고 `rebase`를 계속 진행해야 합니다. 히스토리 변경 `rebase`는 기존의 커밋 히.. 2023. 12. 6. Git Revert 마스터 브랜치(혹은 메인 브랜치)에서 잘 못 푸시한 커밋을 되돌려야 하는 상황에서 사용할 수 있는 명령어로는 revert, reset이 있습니다. reset은 깃 커밋이 이력자체를 다 삭제하는 것에 반해 revert는 깃의 커밋 이력을 유지하며 롤백이력을 추가합니다. git log가 아래와 같다고 가정해 봅시다. commit 6771f9ef131e094d184999d2f2d8952ca5f8f0f7 (HEAD -> master) Date: Thu Nov 9 07:25:59 2023 +0900 '2th-commit' commit f013b11e190d2e2a766551abb2c67e07d22fd58d Date: Thu Nov 9 07:25:09 2023 +0900 '1th-commit' 2th-commit을.. 2023. 11. 9. Git&Git-Flow - (1) 형상관리시스템 Git Git이란? - 개발 산출물을 관리해주는 형상관리시스템 - 중앙 집중형 버전 관리 시스템인 Subversion(SVN)과는 다르게 분산 버전 관리 시스템이며 version database가 Git 서버와 로컬 서버 양 쪽에서 가지고 있기 때문에 서버 database의 문제가 생길시에 local database를 이용해서 복원시킬 수 있다. Git의 특징 세가지의 상태를 가진다. 1. Staged : git의 최신버전과 내용이 달라진 파일들이 위치하는 영역 2. Modified : 수정된 파일 Staged와 Modified의 차이는 둘 다 수정된 파일이지만 git add "파일명"의 명령어를 입력해야 Modified 상태의 파일이 Staged 영역으로 진입한다. 3. Commited : Staged에 위치.. 2018. 5. 20. 이전 1 2 다음 반응형