1. git init과 git init --bare로 만든 directory의 차이
git init 명령어를 사용하면 디렉토리에 Git 저장소가 새로 만들어지고 프로젝트를 버전 관리할 수 있다. 이때 git bare옵션을 사용할 수 있는데 옵션의 유무에 따른 차이점에 대해 살펴보자.
먼저 옵션 없이 git init 명령어만 사용하면 아래와 같이 프로젝트에 데이터를 저장하고 관리하는 .git 폴더가 생성되는 것을 알 수 있다.

하지만 bare옵션을 사용하면 .git 디렉토리 내부에 있는 파일들만 생성되는 것을 볼 수 있다. ( 다음 링크에서 내부 폴더에 대해 자세히 확인할 수 있다https://git-scm.com/book/ko/v2/Git의-내부-Plumbing-명령과-Porcelain-명령#ch10-git-internals)

--bare는 작업 디렉터리가 없는 리포지토리를 만드므로 해당 리포지토리에서 파일을 편집하고 변경사항을 커밋하는 것이 불가능하다.(pull과 push는 가능) 즉 아래 그림과 같이 개발환경이 아니라 원격 중앙 리포지토리를 만들 때 이 옵션을 사용한다.

2. stash 명령어의 사용
stash 명령어는 현재 브랜치에서 작업을 완료하지 않은 상태에서 커밋을 남기지 않고 다른 브랜치를 사용했다가 나중에 다시 작업물을 불러오기 위해 사용한다.
| 당신이 어떤 프로젝트에서 한 부분을 담당하고 있다고 하자. 그리고 여기에서 뭔가 작업하던 일이 있고 다른 요청이 들어와서 잠시 브랜치를 변경해야 할 일이 생겼다고 치자. 그런데 이런 상황에서 아직 완료하지 않은 일을 커밋하는 것이 껄끄럽다는 것이 문제다. 커밋하지 않고 나중에 다시 돌아와서 작업을 다시 하고 싶을 것이다. 이 문제는 git stash 라는 명령으로 해결할 수 있다. |
Stash 명령을 사용하면 워킹 디렉토리에서 수정한 파일들만 저장한다. Stash는 Modified이면서 Tracked 상태인 파일과 Staging Area에 있는 파일들을 보관해두는 장소다. 아직 끝내지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다(브랜치가 달라져도 말이다).
$ git stash (or git stash save) # 스택에 새로운 Stash 생성
$ git stash list # 저장한 Stash 확인
$ git stash apply stash@{2} # Stash 적용, 이름 없으면 가장 최근의 Stash 적용
$ git stash drop # 스택에서 Stash 제거
$ git stash pop # Stash 적용 후 스택에서 바로 제거
참고
https://git-scm.com/book/ko/v2/Git-%eb%8f%84%ea%b5%ac-Stashing%ea%b3%bc-Cleaning
https://www.atlassian.com/ko/git/tutorials/setting-up-a-repository/git-init
'OSSCA-2025-3rd-Class-yocto' 카테고리의 다른 글
| [5주차] yocto 이미지에 c 파일 패키지 포함하기 (Hello World 프로젝트 넣기) (0) | 2025.11.04 |
|---|---|
| [3주차] yocto layer 구성 파일 및 custom layer 생성, 패키지 추가 (0) | 2025.10.29 |
| [3주차] YOCTO core-image-weston 빌드 (0) | 2025.10.16 |
| [3주차] 임베디드 OS, Yocto Project 구성 및 컨셉 (0) | 2025.10.14 |
| [1주차] 프로젝트 개요 및 git 이해(fetch와 pull의 차이, merge와 rebase의 차이) (0) | 2025.10.03 |