목적: main 브랜치와 dev 브랜치를 일치시키려고 함
상황 :
main 문에 이미 commit이 이전에 올라가 있고, dev 브랜치는 이를 받으려고 하는데
main commit 내역과 dev commit 내역이 일치하지 않아 문제 발생
( main 문에는 바로 올리지 말자..)
6328fbb (HEAD -> dev) Merge branch 'main' into dev
a0c3230 (main) Day 4
2fde97e week 1: merge
0c62db5 (origin/dev) week 1 : example
ed0caaf week 1 : reveiw 1
8bd7692 modify .gitignore for cross platform
4692ee9 week 1 : docs update
b221f6f Day 3
a58795d Day 2
d24ef9d Day 1
b9646fc Initial commit .gitingore
- 브랜치 불일치
- 로컬 dev 브랜치와 원격 dev 브랜치(origin/dev)가 서로 다른 상태
- main 브랜치와 dev 브랜치가 각각 다른 커밋 히스토리를 보유
- 커밋 히스토리 차이
- dev 브랜치에만 존재하는 커밋들:
- week 1 : example
- week 1 : review 1
- main 브랜치의 최신 커밋: Day 4
- dev 브랜치에만 존재하는 커밋들:
- 병합 상태
- dev 브랜치에 main 브랜치를 병합한 상태이지만, 완전한 동기화가 이루어지지 않음
해결 방안
- 현재 상태 확인
git status
C:\Users\jaeho\Documents\GitHub\CppBasic>git status
On branch dev
Your branch is ahead of 'origin/dev' by 3 commits.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: source/example/manual.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
.vscode/
source/geometry.cpp
no changes added to commit (use "git add" and/or "git commit -a")
2. 브랜치 동기화
git checkout dev
git reset --hard main
3. 원격 저장소 업데이트
git push -f origin dev
HEAD is now at a0c3230 Day 4
C:\Users\jaeho\Documents\GitHub\CppBasic>git push -f origin dev
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 20 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 2.68 KiB | 2.68 MiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (2/2), completed with 1 local object.
To https://github.com/Shoons23/CppBasic.git
+ 0c62db5...a0c3230 dev -> dev (forced update)
이러면 dev와 main branch는 일치하지만,,, dev 브랜치 commit 내역이 전부 삭제
해결 방안 2
다시 돌아가서~ 항상 branch 작업 등을 실시할 때는 백업브랜치를 따로 만들어놓자!
1. 먼저 dev 브랜치를 dev-recovered와 동기화:
# dev 브랜치로 이동
git checkout dev
# dev-recovered의 내용으로 강제 업데이트
git reset --hard dev-recovered
# 원격 dev 브랜치 업데이트
git push -f origin dev
2. main문에서 Day 4 커밋도 포함
# main의 Day 4 커밋(a0c3230)을 가져오기
git cherry-pick a0c3230
# 원격 저장소 업데이트
git push -f origin dev
의도했던 대로 원래의 dev 커밋을 유지하면서 성공!
'CI&CD > Git' 카테고리의 다른 글
[Git] 내 로컬 pc에서 작업 중인 repo를 깃허브 repo로 올리는 절차 (0) | 2025.02.05 |
---|---|
[Git] 크로스 플랫폼 개발 시 줄바꿈 문자(CRLF/LF) 문제 해결 (0) | 2025.01.05 |
[Git] 내 코드 파일 배포 A to Z (0) | 2024.12.08 |
[Git] github 최근 커밋 수정사항 반영: git commit --amend (0) | 2024.11.26 |
[Git] window에서 이미 푸시된 커밋을 삭제하는 방법 (2) | 2024.11.08 |