$ git stash
unstaged상태인 변경사항을 일시적으로 백업하고 워킹 디렉토리를 깨끗한 상태(HEAD)로 유지해 준다.
Github에서 pull을 하는 경우, 아직 commit하지 않은 변경사항이 로컬에 저장되어 있는 경우, conflict이 발생하여 pull이 실패하게 된다. 이 때, 완성되지 않는 상태의 작업을 commit하지 않고도 $git stash
를 이용하면 현재 브랜치에서 새로운 브랜치가 임시로 생성되어, 그 곳에 진행중인 작업을 일시적으로 backup 해준다 (tracked 파일에만 적용).
$ git stash list
를 통하여, git stash에 저장된 내용을 확인 할 수 있으며, $ git stash show <stash이름>
을 통해서, 내용을 자세히 볼 수 있다.
$ git stash list
$ git stash show stage@{0}
작업이 끝나고 다시 적용 시키려는 경우 $git stash pop
을 사용하면, stash에 저장된 내용은 PWD에 다시 적용되며, stash에서는 제거된다. 제거하지 않고 적용만 하려면 $git stash apply <stash이름> --index
를 사용한다 (--index를 사용하지 않으면, add는 이루어지지 않음).
stash에 관한 다른 명령어는 git documentation(https://git-scm.com/docs/git-stash)에서 확인할 수 있다.
(Quote, Content : https://blog.outsider.ne.kr/788)
git add -interactive
$ git add
명령어를 사용하면 파일을 staging 단계로 넘기는데, 보통 $ git add .
을 사용하여 PWD(Pressent Working Directory)의 모든 파일을 staging한다.
경우에 따라서 여러 변경한 파일 중, 특정한 파일만 staging 할 수 있는 명령어가 있는데, 그게 바로 $ git add -i
이다.
명령어를 입력하면 다음과 같은 창이 뜬다.
> git add -i
staged unstaged path
1: unchanged +2/-0 README
2: unchanged +4/-0 index.html
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
# untracked 파일 추가하기
What now> a
1: README
Add untracked> 1
* 1: README
added 1 path
# revert
What now> r
staged unstaged path
1: +0/-0 nothing README
Revert>> 1
staged unstaged path
*1: +0/-0 nothing README
Revert>>
note: README is untracked now.
reverted 1 path
What now>
에 실행하고 싶은 코맨드의 앞자리만 입력한다.
예) add untracked의 경우, What now> a
Add untracked
는 아직 트래킹 되지 않는 파일을 추가 하게 해준다.
파일에 지정된 숫자를 입력하고 엔터를 치면, add된다.
r
을 사용하여 추가를 Revert할 수도 있다.
어떤 다른 branch의 commit을 나의 branch에 복사해준다.
복사할 branch의 commit id 를 복사해 두고, 나의 branch에서 다음의 명령어를 입력한다.
$ git cherry-pick <commit id>
나의 branch에 같은 내용 but 다른 id의 commit이 복사되어 생성된다.