728x90
반응형
상황
블로그에 게시할 내용 작성 후 commit을 했습니다. 그 이후 push를 하려고 하니 pull이 필요하다고 합니다.
생각해보니 집에서 Repository에 push를 이미 했는데, 노트북에서 작업시에 pull을 하지 않았습니다.
하나의 브랜치에서 작업한 내용인데.. 겹쳤습니다.
해결방법
1. git reset + stash
# 가장 최근작업을 취소한다.
$ git reset HEAD^
# 수정된 내용들을 잠시 stack에 저장해둔다.
$ git stash
# pull을 통해서 최신 내용을 다시 받아온다
$ git pull origin my_repo
# stack에 담았던 수정사항을 다시 가져온다.
$ git stash pop
# Merge Conflict 해결 이후 다시 커밋한다.
$ git commit
# remote repository에 push한다.
$ git push ~~
- git stash pop 시에 conflict이 생깁니다
- 내가 변경한 내용과 새롭게 최신화 한 내용의 수정내용이 같다면 conflict은 당연히 생길 수 있습니다.
- merge conflict와 동일하게 해결하면 됩니다.
- 잘못 merge된 내용은 reset으로 취소하면 됩니다.
- 옵션은 --soft, --mixed, --hard가 있습니다. 아무 옵션도 주지 않을경우 --mixed 입니다.
commit을 취소하고, 해당 내용을 잠시 다른곳에 저장 합니다.
브랜치를 최신화 하고 충돌을 해결 후 다시 commit하는 방법입니다.
그런데 reset keyword가 주는 부담감이 있습니다. reset을 잘못 하더라도 reflog를 통해서 commit 번호를 찾아 reset 하기 전으로 되돌릴 수 있으므로 부담 없이 하셔도 됩니다.
마무리
근본적인 원인은 미리 pull을 하지 않아 발생한 문제입니다.
앞으로는 pull을 한 후에 해결하는것이 좋을것 같습니다.
Reference
728x90
반응형
'일상' 카테고리의 다른 글
[Coursera] 인생을 걸고 한 약속에서 성공한 이야기 (0) | 2021.08.11 |
---|---|
[VSC] C,C++ task.json 설정방법 (무한 running task), 컴파일 실행 동시에 하기 (0) | 2021.08.02 |
[일상] SW마에스트로 2차 탈락 후기 (0) | 2021.03.20 |
[일상]소프트웨어마에스트로 코딩테스트 1차 후기 (0) | 2021.03.05 |
[쿠키런킹덤] 쿠폰자동등록 프로그램 (다시 키울때 좋음) (0) | 2021.02.14 |