branch를 따서 작업하고 PR을 날린 다음에, 피드백이 오던지 아니면 내가 문제를 발견해서 commi을 하려고 할 때, 이미 그 사이에 원 레포(origin)에 다른 머지가 생겨서 이미 내가 최초에 branch를 따왔을 때 보다 origin이 앞으로 나가 있을 상황이 있다. 이 때 해결방법을 따라할 수 있도록 살펴보자.
feature/jira-123 $ git branch -v
먼저 브랜치를 확인했다. 그랬더니 메인 브랜치 이름이 main 이더라. 예전에는 기본값이 master였다고 하는데 요즘은 main이 기본값이라고 한다.
feature/jira-123 $ git checkout main
error: 다음 파일의 로컬 변경 사항을 체크아웃 때문에 덮어 쓰게 됩니다:
my/file.py
브랜치를 전환하기 전에 변경 사항을 커밋하거나 스태시하십시오.
중지함
그 다음, 최근 상태를 가져오기 위해 main으로 전환하려는데, 그러면 내가 현재 브랜치에서 작업한 사항이 사라지게 되므로 브랜치를 전환하기 전에 내가 변경한 사항을 커밋하거나 스태시하라고 한다. 그런데, 커밋을 하자니 현재 remote repo인 main에서 작업된 최신의 사항과 일부 내용이 다른 상태인 현재 나의 레포가 main으로 커밋을 시도하면서 충돌이 날 것 같다. 스태시로 가야한다.
feature/jira-123 $ git stash save “my/file.py”
내가 작업한 소중한 파일을 stash를 해서 보관해둔다.
feature/jira-123 $ git checkout main
'main' 브랜치로 전환합니다
브랜치가 'origin/main'에 맞게 업데이트된 상태입니다.
드디어 main 으로 전환 가능하다! 업뎃된 상태라니 무슨 말인지 모르겠네.. 무시해주자.
main $ git pull origin main
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 11 (delta 6), reused 10 (delta 6), pack-reused 0
오브젝트 묶음 푸는 중: 100% (11/11), 1.44 KiB | 98.00 KiB/s, 완료.
https://github.sstt.com/abc/xyz URL에서
* branch main -> FETCH_HEAD
76b2814..867a25b main -> origin/main
업데이트 중 76c2814..867b25b
Fast-forward
other/file.py | 7 ++++++-
other/dir/script.py | 12 ++++--------
2 files changed, 10 insertions(+), 9 deletions(-)
최신 상태로 업데이트 했다.
main $ git checkout feature/jira-123
‘feature/jira-123’ 브랜치로 전환합니다
원격 레포에서 가져온 상태인 나의 브랜치로 갈아탄다. 내가 전에 날린 PR에 의한 브랜치다.
feature/jira-123 $ git stash pop
현재 브랜치 feature/jira-123
커밋하도록 정하지 않은 변경 사항:
(무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
(use "git restore <file>..." to discard changes in working directory)
수정함: my/file.py
커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)
Dropped refs/stash@{0} (afc39b14da929a320skdza97e2824a8622bd897)
잠깐 세이브해둔 내 소중한 작업파일을 다시 가져온다.
feature/jira-123 $ git add my/file.py
드디어 커밋의 전단계. 커밋할 내 소중한 작업파일을 add 명령어로 staging 하고
feature/jira-123 $ git status
현재 브랜치 feature/jira-123
커밋할 변경 사항:
(use "git restore --staged <file>..." to unstage)
수정함: my/file.py
잘 올라갔나 상태 한 번 보고
feature/jira-123 $ git commit -m “my/file.py to do some magnificent thing!”
[feature/jira-123 2b76f67] file.py: my/file.py to do some magnificent thing!
1 file changed, 118 insertions(+), 56 deletions(-)
커밋
feature/jira-123 $ git push origin feature/jira-123
오브젝트 나열하는 중: 13, 완료.
오브젝트 개수 세는 중: 100% (13/13), 완료.
Delta compression using up to 10 threads
오브젝트 압축하는 중: 100% (7/7), 완료.
오브젝트 쓰는 중: 100% (7/7), 1.91 KiB | 1.91 MiB/s, 완료.
Total 7 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
remote:
To https://github.sstt.com/abc/xyz
acbcfd0..2b76f67 feature/jira-123 -> feature/jira-123
원격 레포에 PR되었던 상태인 내 브랜치에, 추가 커밋을 성공적으로 날렸다.
'IT in General > OS' 카테고리의 다른 글
꿀팁 대방출 (0) | 2023.03.18 |
---|