과거 svn을 사용할때, 소스가 꼬였거나 잘 못된 개발로 되돌아가야할 일이 생길 경우 리비전을 통해 되돌아가고 재작업을 진행하고 그랬는데, git에서는 리비전이라는 용어대신 특정 commit으로 되돌아 가는 방식을 사용해야 했습니다.
너무 복잡한 예시는 오히려 이해하는데 방해가 될 것 같아서 최대한 간단하게 해보려고 합니다.
index.js추가 ~ cal메소드 추가부분을 봐주시면 됩니다.
fork를 사용 중이라면 되돌아가고자 하는 commit부분에 오른쪽 클릭 후 checkout commit 을 해주면 간단하게 되돌아갑니다.
역시 gui가 한 눈에 잘보이고 편합니다...
이 후 브랜치를 새로 생성하고 소스를 수정한다음 merge까지 진행하면 새롭게 변경할 수 있습니다.
fork사용자는 이렇게 편하지만 git bash를 쓰고 있는분들을 위해 명령어와 함께 설명을 추가해보겠습니다.
git bash에서 과거 commit으로 회귀하기
git log
git log
commit된 히스토리들을 봐야 되돌아가고 할텐데 이때 사용하는 명령어는 "git log"입니다.
-p옵션을 사용하면 어떤부분이 바뀌면서 올라갔는지 나오고 추가적으로 -2 와 같은 명령어를 입력하면 최근 2개만 출력해서 보여줍니다.
git log -p -2
명령어를 입력해보면 노란글씨의 commit 부분이 보일텐데 앞 6자리를 기준으로 확인해주면 알아서 식별을 해줍니다.
git에 등록한 각각 commit의 고유번호들로 이 값을 통해 돌아갈 수 있습니다.
되돌아갈땐 브랜치를 바꿀 때 사용하였던 checkout 명령어를 사용합니다.
과거 commit으로 돌아가기
git checkout <commit번호>
"git checkout 0cd1df"를 입력해보겠습니다.
되돌아오기
그럼 다시 원래대로 돌아올수도 있어야겠죠?
마지막 commit된 곳으로 해도되지만 마지막 브랜치인 master로 이동하겠습니다.
git checkout master
과거로 commit후 새롭게 브랜치 생성하기
cal()메소드가 존재하지 않던 과거로 돌아가고 거기서 브랜치를 만들어서 master를 진행해보겠습니다.
방금 전 과거 commit으로 돌아갔으니 거기서 소스 수정하고 다시 commit하면 되는게 아닐까 생각하시겠지만 그부분에서 commit을하고 push를 해도 브랜치를 만들어서 진행한게 아니기때문에 적용이 되질 않습니다.
git log
//돌아갈 commit 고유값 앞 6자리를 기억합니다.
git checkout 4385268
git log를 통해 commit 고유값을 알아낸 후 다시 과거로 돌아갑니다.
이제 브랜치를 새로 생성해줍니다.
git branch new_psw
되돌아가서 브랜치까지 생성을 성공하셨다면 checkout을 통해 꼭 브랜치를 변경하시고 수정할 소스를 바꾸신 후 다시 commit을 처리해줍니다.
이제 브랜치가 생겼기때문에 commit을해도 정상적으로 처리가 됩니다.
new_psw브랜치로 새로운 소스 올리기
git checkout new_psw //새로 생성한 브랜치로 바꾼다.
git add . //변경된 소스를 올린다.
git commit -m "min메소드 추가" //commit처리
git push origin new_psw //서버에 new_psw브랜치로 올리기
새로운 브랜치를 따서 작업을 완료했으니 변경된 브랜치로 checkout을 하시고 변경된 소스를 올린 후
commit을 해줍니다.
push를 통해 서버까지 올리면 이제 master브랜치로 병합처리를 해보겠습니다.
master브랜치 병합하기
git checkout master
master브랜치로 변경합니다.
git merge new_psw
master브랜치로 바꿔놓은상태에서 new_psw브랜치를 병합합니다.
merge failed라는 말과 할께 충돌이 났다는 메시지가 나옵니다.
충돌난 소스를 수정하겠습니다.
충돌이 났고 필요없는 cal메소드는 삭제하였습니다.
이제 완벽하게 merge를 끝내기 위해 다시 소스를 올립니다.
git add .
git commit -m "merge 완료"
git push origin master
merge를 위해 commit을 진행합니다.
생각보다 복잡하다면 복잡하지만 branch과정을 한번 해보셨다면 그렇게 어렵지 않을겁니다.
이부분이 어려우신분은 branch부터 간단하게 예제를 한번 해보시면 쉽게 이해가 가능할 것 같습니다.
여기서 한단계 더 나아가면 더이상 사용하지 않는 new_psw브랜치까지 삭제해주시면 좋을 것 같습니다.
'SCM > GIT' 카테고리의 다른 글
GITHUB - 잔디심기 안될때... (0) | 2022.09.30 |
---|---|
GIT - 브랜치 원격저장소에서 받아오기 (0) | 2020.04.06 |
GIT - git에서 branch 만들어서 사용하기, 소스 병합하기 (0) | 2020.03.02 |
GIT - ignore파일 적용하기(파일 제외하고 push하기) (0) | 2020.02.12 |
GIT - 깃(GIT) 사용하기 (GIT BASH), 외부 저장소에 올리기, 받기 (0) | 2019.12.12 |