일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬GUI
- 윈도우11
- pyqt5
- python3
- 문자열
- Excel
- 윈도우10
- python
- win32com
- Android
- VBA
- 오피스
- Windows11
- office
- pandas
- matlab
- Outlook
- windows
- pythongui
- 안드로이드
- 비주얼베이직
- html
- 아웃룩
- git
- 파이썬3
- 깃
- 파워포인트
- 엑셀
- 파이썬
- Windows10
Appia의 IT세상
[깃, Git] Git stash를 이용하여 변경사항 커밋없이 branch 전환하기 본문
[깃, Git] Git stash를 이용하여 변경사항 커밋없이 branch 전환하기
이전 포스팅에서는 git diff를 이용하여, 다양한 조건에서의 차이점을 비교하는 방법에 대해서 이야기르 해봤습니다. 물론, 여러번 말했다시피, git diff는 필수 기능은 아니나, 알고 있으면 다양한 관점에서 매우 유용하게 접근이 가능합니다. 이번에는 branch(브랜치)를 전환할 때, 종종 걷는 문제점에 대해서 해결하는 방법에 대해서 이야기를 해보고자 합니다. 바로 git stash 기능입니다. 실제, 변경사항이 commit 되지 않을 경우에, branch(브랜치) 전환을 할 수 없습니다. 그 부분에 대해서 이야기를 해보고자 합니다.
[깃, Git] Git diff 특정 branch(브랜치) / 특정 commit 비교하기
먼저, 종종 branch(브랜치) 전환을 시도할 때, 다음과 같은 에러 메시지를 밖는 경험이 있을 것입니다.
$ git switch target1
error: Your local changes to the following files would be overwritten by checkout:
master_h.txt
Please commit your changes or stash them before you switch branches.
Aborting
실제, 위와 같은 에러는, 변경사항이 있는데, commit(커밋)없이 branch(브랜치) 전환을 시도할 경우에 발생합니다. 이럴 경우에 git stash을 자주 사용합니다. git stash라는 것은 쉽게 이야기 하면, commit 되지 않은 변경사항에 대해서 임시로 저장해두고, 그 부분에 대해서 원복을 하는 기능이라고 생각하시면 됩니다.
먼저, 가장 간단하게 git stash을 사용하는 방법에 대해서 살펴보겠습니다.
$ git stash / git stash save # 변경 사항 임시저장
$ git stash pop # stash된 저장항목 불러오기
그러면 간단한 예제를 만들어서 테스트를 해보도록 하겠습니다. 먼저, 임의적으로 변경사항을 만들어서 문제 사항을 만들어보도록 하겠습니다. 파일 하나에 대해서 임의적으로 수정을 해보겠습니다.
그런 후에 "git status" 명령어를 통해서, 현재 branch(브랜치)에 대한 상태에 대해서 확인을 해보겠습니다.
위에서의 결과 변경사항이 있는 것을 확인하였습니다. 그리고 나서, "git switch" 명령어를 이용하여 branch(브랜치)를 이동해보도록 하겠습니다.
$ git switch target1
위에서와 같이 문제사항이 발생함을 알 수 있습니다. stash을 진행해보도록 하겠습니다.
$ git stash
위의 명령어를 통해서 변경사항에 대해서 임시 저장해보도록 하겠습니다.
위의 결과 다음과 같은 결과가 나타나는 것을 알 수 있습니다.
$ git stash
Saved working directory and index state WIP on master: 651431f change1
그리고 나서, 다시 한번 git status 명령어를 통해서 branch(브랜치)의 상태를 확인해보도록 하겠습니다.
위에서와 같이 현재 branch(브랜치)에서 변동사항이 없는 것으로 보여집니다. 그러면 이 부분을 토대로 git switch 명령어를 통해서 branch(브랜치)를 전환해 보도록 하겠습니다.
위의 과정을 통해서, 정상적으로 target1으로 branch(브랜치)전환을 이루었습니다. 그러면, 다시 master에서 이전에 stash한 변경사항들을 불러오도록 하겠습니다. 먼저, 다시 git switch 명령어를 통해서 master 브랜치로 이동하도록 하겠습니다.
$ git switch master
위의 명령어를 통해서 branch(브랜치)를 전환하고 나서, 다음 명령어를 통해서 git stash에 저장된 임시 저장된 부분을 현재 branch(브랜치)에 적용해보도록 하겠습니다.
$ git stash pop
위의 결과로 다시 한번 "git status"로 현재 branch(브랜치)의 변경사항에 대해서 확인을 해보도록 하겠습니다. 이전에 변경사항이 없는 것처럼 나왔는데, 다시 변경사항이 생겼습니다. 즉, 임시 저장된 변경사항에 대해서 다시 불러온 것이라고 생각하시면 됩니다.
위와 같은 방법으로 가장 쉽게 git stash/git stash pop를 적용할 수 있습니다.
이번 포스팅에서는 [깃, Git] Git stash를 이용하여 변경사항 커밋없이 branch 전환하기라는 주제로 이야기를 해봤습니다. Merge conflict(머지 충돌)만큼이나 자주 사용되는 부분입니다. 물론, git stash도 다양하게 사용이 가능합니다만, 그 모든 기능을 사용하지는 않고, 상기에서 언급한 git stash/git stash pop정도만 사용해도, 충분합니다. 혹 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.
'Development > GIT' 카테고리의 다른 글
[깃, Git] Git 이전 commit 확인 및 되돌아가기: 쉽고 빠른 방법 안내 (0) | 2023.12.06 |
---|---|
[깃, Git] Git stash 다양한 사용법(apply, 다중 stash) (0) | 2023.12.02 |
[깃, Git] Git diff 특정 branch(브랜치) / 특정 commit 비교하기 (0) | 2023.11.30 |
[깃, Git] Git diff 특정 파일의 변경사항 확인하기 (0) | 2023.11.29 |
[깃, Git] Git diff 전체, staged에 등록된 차이, 등록되지 않은 차이 확인하기 (0) | 2023.11.28 |