(git) git stash/add -interactive & branch cherry-pick

Kepler·2020년 2월 27일
0

Git

목록 보기
3/6
post-custom-banner

$ 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 cherrypick

어떤 다른 branch의 commit을 나의 branch에 복사해준다.

복사할 branch의 commit id 를 복사해 두고, 나의 branch에서 다음의 명령어를 입력한다.

$ git cherry-pick <commit id>

나의 branch에 같은 내용 but 다른 id의 commit이 복사되어 생성된다.


참고링크:
https://velog.io/@leejh3224/Git-%ED%94%84%EB%A1%9C%EC%B2%98%EB%9F%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-q6k1agxpkq

profile
🔰
post-custom-banner

0개의 댓글