깃허브 데스크탑으로 프로젝트 관리하기 강의 오픈!! (인프런 바로가기)
참고
git stash / git stash save | 현재 수정 중인 모든 파일을 감춘다. |
git stash list | stash된 목록을 본다. |
git stash pop | 가장 최근에 stash된 파일을 원상 복구한다. |
git stash apply | 가장 최근에 stash된 파일을 원상 복구하지만 list에는 남겨둔다. |
git stash drop | 가장 최근에 stash된 파일을 원상 복구하지 않고 삭제한다. |
git stash clear | 모든 stash list를 삭제한다. |
git stash push | 현재 수정 중인 파일 중 일부 파일만 감춘다. |
스태쉬(스테이시) 명령 동작을 확인하기 위해 Git Bash에서 파일을 적절히 수정한 상태로 만들어보자.
git status → 현재 아래와 같이 3개의 파일을 수정 중인 상태인 것을 알 수 있다.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: TestScript1.cs
modified: TestScript2.cs
modified: TestScript3.cs
no changes added to commit (use "git add" and/or "git commit -a")
이제 수정 중인 파일을 감추고 다시 되돌려보자.
git stash / git stash save
현재 수정 중인 파일을 모두 stash로 안전하게 저장한다.
$ git stash save
Saved working directory and index state WIP on main: ba277872 Update default-2021.dwlt
git status로 현재 깃의 상태를 보면 clean하다.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
git stash list
현재 stash에 수정 중이던 파일의 목록을 알 수 있다.
git stash를 했을 때 나온 로그가 그대로 보인다.
$ git stash list
stash@{0}: WIP on main: ba277872 Update default-2021.dwlt
git stash pop
해당 리스트는 스택으로 관리된다.
따라서 pop을 하면 가장 최신 stash부터 원래대로 돌아온다.
위에서 stash@{0}에 stash가 저장되었는데 다시 파일을 수정 후에 stash하면 stash@{1}에 저장된다.
이때 pop을 하면 {1}이 먼저 복구된다.
$ git stash pop
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: TestScript1.cs
modified: TestScript2.cs
modified: TestScript3.cs
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (c7b25adbea9a478589d9472023bc3ee691602b86)
git stash list를 하면 pop이 된 것을 확인할 수 있다.
git stash apply / drop / clear
apply는 최신 stash를 다시 복구하지만 list에서 빼지는 않는다.
따라서 수정된 내용을 다시 변경하더라도 수정된 내용으로 복구할 때 사용한다.
$ git stash apply
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: TestScript1.cs
modified: TestScript2.cs
modified: TestScript3.cs
no changes added to commit (use "git add" and/or "git commit -a")
git stash pop과 다르게 git stash list에서 목록을 확인할 수 있다.
$ git stash list
stash@{0}: WIP on main: ba277872 Update default-2021.dwlt
git stash drop은 stash 최신 목록을 사용하지 않고 지운다.
$ git stash drop
Dropped refs/stash@{0} (e24d91f96960c73aadb2e82cdf4d4f8c04477d51)
git stash clear는 모두 지운다. 로그를 남기지 않는다.
git stash push
현재 stash는 깃허브 데스크탑과 마찬가지로 모든 파일을 한꺼번에 저장하였다.
Git Bash에서는 원하는 파일만 push 명령으로 stash가 가능하다.
TestScript1.cs만 stash 해보자.
$ git stash push TestScript1.cs
Saved working directory and index state WIP on main: ba277872 Update default-2021.dwlt
<stdin>:9: trailing whitespace.
//Test
warning: 1 line adds whitespace errors.
git status에서 TestScript1.cs가 사라진 것을 알 수 있다.
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: TestScript2.cs
modified: TestScript3.cs
no changes added to commit (use "git add" and/or "git commit -a")
git stash list에 0번째에 저장된 것도 확인이 가능하다.
$ git stash list
stash@{0}: WIP on main: ba277872 Update default-2021.dwlt
아래와 같이 정규 표현식을 이용해 남은 파일 2, 3도 stash에 담았다.
$ git stash push TestScript*
Saved working directory and index state WIP on main: ba277872 Update default-2021.dwlt
<stdin>:9: trailing whitespace.
<stdin>:22: trailing whitespace.
warning: 2 lines add whitespace errors.
list에 두 개의 항목이 보이게 된다.
$ git stash list
stash@{0}: WIP on main: ba277872 Update default-2021.dwlt
stash@{1}: WIP on main: ba277872 Update default-2021.dwlt
마찬가지로 pop이나 apply를 이용해서 복구할 수 있다.
'개발 > Git, GitHub' 카테고리의 다른 글
깃허브 데스크탑 - Revert와 Reset으로 과거 커밋으로 되돌아가기 (+ Git Bash) (0) | 2022.07.30 |
---|---|
깃허브 데스크탑 - 커맨드 창을 Git Bash로 변경하기 (Change Command Prompt to Git Bash) (0) | 2022.07.29 |
깃허브 데스크탑 - 일부 파일만 스테이시로 감추기 (Git Stash Some Specific Files) (0) | 2022.07.28 |
Git Bash - SSH 키 삭제, 생성, 등록 (0) | 2022.07.15 |
Git Bash - Window에서 경로 Aliasing 설정하기 (0) | 2022.07.09 |
댓글