$ git stashunstaged상태인 변경사항을 일시적으로 백업하고 워킹 디렉토리를 깨끗한 상태(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이 복사되어 생성된다.