본문 바로가기

notes

git 기초 2

@마크다운


# 7.3


#Stashing and Cleaning


## stashing


### stash 만들기

Stash 명령 사용시 working directory에서 수정한 파일들만 저장한다.


Modified, Tracked, Staging Area파일들을 보관해두는 장소


아직 작업중인 사항을 스택에 저장하는것


![git stash](/Users/hongdonghyun/projects/til/images/7.3 stash_1.png)


```

git stash

modified 상태의 파일이 git stash 명령 사용후 상태가 깨끗해졌다.


```

![git stash list](/Users/hongdonghyun/projects/til/images/7.3stash_2.png)

**!**

```

git stash list


```

**!**

#### stash를 만드는 새로운 방법


``` 

git stash --keep-index


```


이미 Staging Area에 들어 있는 파일을  stash 하지 않는다.

많은 파일을 변경했지만 몇가지 파일만 커밋하고 나중에 처리하고 싶을때 사용


Untracked 파일과 Tracked파일을 같이 stash하는 경우도 많다.

Untracked파일도 같이 저장하려면 **"--include-untracked"** or **"-u"** 옵션을 붙여준다. 


### 다시적용하기

**"git stash apply"**를 사용하여 Stash를 다시 적용할 수 있다.

``` 

git stash apply


```

**"git stash"** 명령을 실행하면 Stash를 다시 적용하는 방법도 알려줘서 편리하다.

```

git stash


```


**"git stash apply stash@{2}"**처럼 Stash 이름을 입력하면 골라서 적용할 수 있다.

이름이 없으면 Git은 가장 최근의 Stash를 적용한다.


```

git stash apply stash@{2}


```


Git은 Stash를 적용할 때 Staged 상태였던 파일을 자동으로 다시 Staged 상태로 만들어 주지 않는다.

 그래서 --index 옵션을 주어 Staged 상태까지 적용한다.

 **"git stash apply --index"** 명령을 사용하여 원래 작업하던 상태로 돌아올 수 있다.


```

git stash apply --index 


```

 

### stash 스택 삭제

apply 옵션은 stash를 적용하기만 할뿐 삭제는 하지 않는다 즉, stash는 여전히 스택에 남아있다.

 이때 **"git stash drop"**명령을 사용하여 해당 stash를 제거한다.


``` 

 git stash drop (가장 최근것)  or

 git stash drop stash@{number} (선택삭제)

 

```

 

**"git stash pop"**이라는 명령어는 stash를 적용하고나서 바로 스택에서 제거해준다.


```

git stash pop


```


**"git stash --patch"** 옵션을 붙이면 수정된 모든 사항을 저장하지 않는다. 대신 프롬프트가 뜨며 저장할것과 저장하지 않을 것을 지정할 수 있다.


```

 git stash --patch

 

```

 



### stash를 적용한 브랜치 만들기

![](/Users/hongdonghyun/projects/til/images/7.3stash_3.png)

**"git stash branch branch_name"** 명령을 실행하면 브랜치를 만들고 적용하며 checkout한다.


```

git stash branch branch_name


```


## Clean


### working directory 청소하기

**"git clean"**은 Merge나 외부 도구가 만들어낸 파일을 지우거나 이전 빌드 작업으로 생성된 각종 파일을 지우는 데 필요하다.

**신중하게사용해야 한다. 명령을 사용하면 working directory안의 Untracked상태 파일도 지워지기 때문인다.**


```

git clean


```


**"git stash -all"**명령을 사용하면 지우는건 같지만 먼저 파일들을 stash한다.


```

git stash -all


```


**"git clean -f -d"**명령은 하위 디렉토리까지 모두 지워버린다.


```

git clean -f -d


```


**"git clean -d -n"**명령을 사용하면 가상으로 실행하여 어떤파일이 지워지는지 알아볼 수 있다.


```

git clean -d -n


```


#### git clean

"git clean"명령은 Untracked파일만 지우는게 기본이다. ".gitignore"에 명시했거나 무시되는 파일은 지우지 않는다.

무시된 파일 까지 지우려면 **'-x'**옵션을 사용한다.


```

git clean -d -x

```


'notes' 카테고리의 다른 글

SQL 기초정리  (0) 2017.08.28
vim 단축키  (0) 2017.08.28
git 기초  (0) 2017.08.28
pickycookbook project 에서 사용된 네이버 레시피 크롤러  (0) 2017.08.23
2017-06-18 markdown 문법 필기  (0) 2017.07.21