일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- maven
- Linux
- unmodified
- brew
- spring boot
- Modified
- 자바스크립트
- SpringBootApplication
- hash-object
- Dependency
- npm
- Git 내부
- 리눅스
- node.js
- git
- staged
- JS
- Server Off
- node
- Auto-Importing
- commit
- docker daemon
- Spring
- Git내부
- github
- git rm
- git push
- Dependency Management
- docker
- git rm --cached
- Today
- Total
목록Git (12)
갓태희
이전글에서 글을 포스팅하다가 hash-object의 --stdin옵션이 정확히 어떤건지를 잘 모르겠어서 구글링과 오픈톡에 물어봤지만 원하는 답을 찾지 못했다. 이전글의 포스팅을 끝마칠때쯔음 git-scm: Git의내부-Git개체 두번째 예시에서 echo의 결과값이 아닌 이제 파일을 가지고 하는예제를 진행하다가 파일은 --stdin옵션을 붙히지 않는데 착안해서 뭔가 알거같은 느낌이 들어 여러가지 재밌는 실험들을 해보았다. 이렇게 아예 test.txt라는 파일을 생성하고나서 hash-object 명령어를 사용할때 --stdin옵션을 사용하지 않는것을 알수있었다. 첫번째, 폴더가 아닌 파일 이 글의 마지막 이 옵션이 없으면 파일 경로를 알려줘야 한다를 계속해서 읽어보니 처음에 나는 objects폴더에 저장을 ..
Git은 Content-addressable 파일 시스템이다. 이 말은 Git의 핵심이 단순한 Key-Value (예를들어, 파일이름이 키 파일 데이터가 데이터가 될수있다.) 데이터 저장소라는 것이다. 어떤 형식의 데이터라도 집어 넣을수 있고 해당 Key로 언제든지 데이터를 가져올 수있다. 이 개념을 설명하기 위해 Plumbing명령어를 예로 들면 git hash-object명령이 있는데 이 명령어에 데이터를 주게되면 .git/objects 디렉토리(즉 개체 데이터베이스)에 저장하고 그 데이터에 접근할 수 있는 key를 알려주며 이 key는 저장소 내에서 유일하다 따라서 우리는 이 명령어를 통해 실제로 Git이 Content-addressable 파일시스템이라는것을 알게 될것이다. 깃이 관리하는 test..
Plumbing명령어는 저수준의 명령어이며 좀 더 사용자에게 친숙한 사용자용 명령어는 Porcelain명령어라고 부른다. 우리가 주로 사용했던 git checkout, git branch, git remote는 Porcelain 명령어라고 부른다. 새로만든 디렉토리나 이미 파일이 있는 디렉토리에서 git init명령을 실행하면 Git은 데이터를 저장하고 관리하는 .git 디렉토리를 만든다. 이 디렉토리를 복사하기만 해도 저장소가 백업 된다. 이게 무슨말이냐면 .git폴더만 가지고 있다면 언제든지 나의 파일을 가지고있는 저장소를 만들수 있다는것이다. 빈 폴더에 복원하고싶은 .git폴더를 복사해놓으면 그걸로 파일 복구는 끝이다. 실제로 해보길 바란다. .git폴더는 다음과 같은 구조를 가진다. HEAD와 동..
들어가기 앞서.. stash는 꼭 자기가 stash했던 내역을 stash했던 시점에 다시 적용시킬 필요는 없습니다. 한번 stash한 내용은 어느 커밋, 어느 브랜치에도 적용가능합니다 그 와중에 충돌이 생긴다면 해결을 해주면 그만입니다. 저는 stash를 하고나면 꼭 다시 stash했던 시점으로 돌아와 stash스택에 저장된 내역을 적용시켜야 하는줄 알았습니다 밑에서 들 예는 같은 브랜치에 다시 돌아와서 적용시키는 예이지만 꼭 저렇지 않고 다른 브랜치, 다른 커밋에 stash를 적용시켜도 무방합니다. 현재 HEAD가 가리키는 main 브랜치에서 갑자기 develop브랜치에 볼일이 있어서 develop 브랜치로 checkout 하려는 상황이라고 가정 해보겠습니다. 예를들어 develop브랜치에는 내가 ma..
git rm에 대하여 이해하기위해서 여기에서 공부를 했었는데 잘 이해가 되지않았었다. 근데 최근들어서 다시 보게 되었는데 너무 좋은 글이였다. 이제 시작해보자. 우선 들어가기에 앞서 git-scm은 git rm을 어떻게 소개하고있는지 봅시다. git-rm - Remove files from the working tree and from the index 즉, 작업 디렉토리와 index에서 파일을 지운다는 것입니다. git-scm에서는 staging영역을 공식적으로 index라고 칭하고 있습니다. 즉 파일도 실제로 지워주고 staging영역에 있다면 staging영역에서 삭제 해준다는 뜻이겠죠 ? Git에서 파일 삭제하는법 Git에서 파일을 삭제하고자 할때는 git rm을 통해 Tracked 상태의 파일을..
Git 서버 - 프로토콜을 공부하다가 Bare 저장소라는 말이 계속나와서 처음에는 그냥넘기려다가 자꾸나와서 이해가 점점 안되길래 구글링을해서 공부를 해보았습니다. 보통 깃관련 구글링을 해보면 git-scm의 내용을 그대로 적은 결과만 많이 보게됬는데 여기에는 직접 실습을 통해서 Bare-repository와 Work-repository의 차이를 알려주어서 이해가 쉽게되었습니다. 그럼 저랑도 같이 실습을 해보시죠. 시작하기 먼저 아무것도 없는 빈 폴더를 만들어서 cd명령어를 통해 그 폴더로 들어갑니다. 그런다음 project라는 폴더를 하나만들어 거기에 README를 하나 추가해 줍니다. 그런다음 project 폴더에 들어가서 git init으로 깃 저장소를 만들어주면 현재 Untracked files로 ..
rebase란 몇개의 커밋들을 새로운 base commit으로 합치거나 이동시키는 과정입니다. 아래 설명들을 모두 보시고 나서 이 뜻을 다시 헤아려 보시면 이해가 잘 되실겁니다 아래 그림부터 보겠습니다. 위 그림은 Release Branch에 Rcommit1, Rcommit2, Rcommit3 총 3개의 커밋이 있는상황이고 Feature Branch는 Fcommit1, Fcommit2 이렇게 2개의 커밋이 있는 상황입니다. 이때 Feature 브랜치는 Rcommit1만 존재했을때 만들어진 브랜치이며 Rcommit1으로부터 만들어진 브랜치임에 주목합니다. 그리고 나서 feature 브랜치에 Fcommit1, Fcommit2 총 두개의 커밋이 추가되었고 저희의 목표는 Feature branch에 Releas..
Git LifeCycle - Untracked 와 Git LifeCycle - (2) 이 두가지의 게시글을 작성하면서 git add와 git commit의 옵션들을 사용하는 법과 개념이 명확히 잡혀있지 않다는것을 느껴 따로 정리하는 글을 작성하였습니다. git add git add는 작업 디렉토리(working directory)상의 변경 내용을 스테이징 영역(staging area)에 추가하기 위해 사용하는 Git 명령어 입니다. 파일과 폴더를 모두 arguments로 받습니다. 또한 git add는 Untracked상태의 파일을 Tracked상태롤 바꿀때와 not staged상태의 파일을 staged상태로 바꾸어줄때 사용하며 Merge한 파일중 충돌난 상태의 파일을 Resolve상태로 만들때 또한 사..