일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 성능최적화
- 개발콘텐츠
- 2022
- NonNullable
- javascript
- 티스토리꾸미기
- vue.js
- 공통컴포넌트
- 리액트
- utilty type
- const 단언문
- returnType
- 레이아웃쪼개기
- CSS
- 누구나 자료구조와 알고리즘
- reactjs
- typescript
- react
- 커스텀
- TSDoc
- 타입좁히기
- JS console
- 반복줄이기
- 제네릭
- 타입스크립트
- React Native
- click and drag
- React.js
- Chart.js
- 폰트적용하기
- Today
- Total
목록Development/Git (11)
몽땅뚝딱 개발자
예를 들어 file.txt 하나를 수정하고 커밋하고 세번을 반복한다고 생각해보자. ◽️ 1단계: HEAD 이동 $ git reset --soft HEAD~ 1. reset 명령은 HEAD를 이동시킨다. checkout처럼 HEAD가 가리키는 브랜치를 바꾸지는 않는다. HEAD는 계속 현재 브랜치를 가리키고 있고 현재 브랜치가 가리키는 커밋을 바꾼다. 2. reset 명령은 가장 최근의 git commit 명령을 되돌린다. git commit 명령을 실행하면 1) Git은 새로운 커밋을 생성하고 2) HEAD가 가리키는 브랜치가 새로운 커밋을 가리키도록 업데이트한다. reset 명령 뒤에 HEAD~ (HEAD의 부모 커밋)을 주면 Index나 워킹 디렉토리는 그대로 두고 브랜치가 가리키는 커밋만 이전으로 ..
◽️ 기본개념 [HEAD] - 현재 브랜치를 기리키는 포인터이며 브랜치에 담긴 커밋 중 가장 마지막 커밋을 가리킨다. - 지금의 HEAD가 가리키는 커밋은 바로 다음 커밋의 부모가 된다. 단순하게 생각하면 HEAD는 현재 브랜치 마지막 커밋의 스냅샷이다. [Index] - 바로 다음에 커밋할 것들이다. (like Staging Area) - 다음에 커밋할 스냅샷이다. ◽️ 흐름 1. git init 일 때는 워킹 디렉토리에만 데이터가 있다. 2. git add하면 워킹디렉토리의 내용을 Index로 복사한다. 3. git commit 명령을 실행한다. 1) Index의 내용을 스냅샷으로 영구히 저장하고 2) 그 스냅샷을 가리키는 커밋 객체를 만든다. 3) master가 그 커밋 객체를 가리키도록 한다. =..
Git으로 일하다 보면 어떤 이유로든 로컬 커밋 히스토리를 수정해야 할 때가 있다. 1) 커밋의 순서 변경 2) 커밋한 파일 변경 3) 여러개의 커밋을 하나로 합치기 4) 하나의 커밋을 여러개로 분리하기 5) 커밋 전체 삭제 이 모든 것은 다른 사람과 코드를 공유하기 전에 이뤄져야 한다. ◽️ 마지막 커밋을 수정하기 1) 커밋 메시지를 수정하기 자동으로 텍스트 펀집기를 실행시켜 마지막 커밋 메시지를 열어준다. $ git commit --amend 2) 나중에 수정한 파일을 마지막 커밋안에 밀어넣기 // 1. add하여 Staging Area에 넣은 뒤 $ git add // 2. 아래 명령어로 커밋하면 커밋 자체가 수정되며 추가로 수정사항을 밀어넣을 수 있다. $ git commit --amend // ..
◽️ 트래킹Tracking 브랜치와 업스트림Upstream 브랜치의 의미 리모트 트래킹 브랜치를 로컬 브랜치로 Checkout하면 자동으로 "트래킹Tracking 브랜치"가 만들어진다. 트래킹 브랜치는 리모트 브랜치와 직접적인 연결고리가 있는 로컬 브랜치이다. 이 때, 트래킹 하는 대상 브랜치를 "업스트림Upstream 브랜치"라고 부른다.
◽️ stashing 가끔 커밋을 할 수 있을정도로 안정된 코드가 아닌 상태에서 다른 브랜치로 이동하여 작업해야하는 경우가 있다. 이 때 stash를 사용하면 커밋하지 않고 나중에 다시 돌아와서 작업을 다시 할 수 있다. stash 명령을 사용하면 워킹 디렉토리에서 수정한 파일들만 저장한다. Stash는 Modified이면서 Tracked 상태인 파일과 Stagin Area에 있는 파일들을 보관해두는 장소다. 아직 끝내지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다. ◽️ 하던 일을 stash하기 임시저장 할 브랜치에서 해당 명령어를 수행한다. $ git stash ◽️ 저장된 stash 목록 나열하기 스택에 만들어진 stash 목록을 나열한다. $ git stash list //..
1. 공백을 제거하자 ◽️ 공백문자 제거하기 $ git diff --check 2. 각 커밋은 논리적으로 구분되는 Changeset 최대한 수정사항을 한 주제로 요약한다. 여러가지 이슈에 대한 수정사항을 하나의 커밋에 담지 않는다. 한 커밋 당 이슈 하나를 담는다. 작업 내용을 분할하고 각 커밋마다 적절한 메세지를 작성한다. 여러 번 나누어 커밋하는 것이 다른 동료가 수정한 부분을 확인할 때나 시점을 복원해서 검토할 때 이해하기 쉽다. 3. 좋은 커밋 메세지 작성하기 메시지의 첫 라인에 50자가 넘지 않는 간략한 메시지를 적어 해당 커밋을 요약한다. 한 라인은 비우고 그 다음 라인부터 커밋을 자세히 설명한다. 영문 50글자 이하의 간략한 수정 요약 자세한 설명. 영문 72글자 이상이 되면 라인 바꿈을 하..
◽️ Long-Running 브랜치 배포했거나 배포할 코드만 master 브랜치에 merge하여 안정 버전의 코드만 master에 두는 방식이다. 개발 브랜치는 공격적으로 히스토리를 만들어 나아가고 안정 브랜치는 이미 만든 히스토리를 뒤따르며 나아간다. ◽️ 토픽 브랜치 토픽 브랜치는 프로젝트 크기에 상관없이 사용할 수 있는데, 어떤 한 가지 주제나 작업을 위해 만든 짧은 호흡의 브랜치이다. 다른 버전관리 도구와 달리 git은 브랜치를 하나 만드는 데 큰 비용이 들지 않는다. hotfix용 브랜치가 대표적인 토픽 브랜치이다. 1) 같은 이슈를 다른 방법으로 해결해보고 싶을 때 2) 작업을 유지하고 master 브랜치에 merge 할 시점을 기다릴 때 출처 및 참고 프로 Git, Scott Chacon, ..
◽️ 파일 이름 변경하기 $ git mv gile_from file_to mv는 단축어로 사실 아래처럼 동작한다. $ mv README.md README $ git rm README.md $ git add README ◽️ 커밋 재작성하기 Staging Area를 사용하여 커밋한다. $ git commit --amend 커밋을 했는데 Stage 하는 것을 깜빡하고 빠뜨린 파일이 있으면 아래와 같이 고칠 수 있다. $ git commit -m 'initial commit' $ git add forgotten_file $ git commit --amend ◽️ 리모트 저장소 이름 변경하기 $ git remote rename $ git remote rename pb paul ◽️ Alias 만들기 이미 있는 ..
로그 파일이나 빌드 시스템이 자동으로 생성한 파일은 Git이 관리할 필요가 없다. *.[oa] // 확장자가 ".o"나 ".a"인 파일을 무시하라 *~ // ~로 끝나는 모든 파일을 무시하라 ◽️ .gitignore의 패턴 - 아무것도 없는 라인이나, '#'로 시작하는 라인은 무시한다. - 표준 Glob 패턴을 사용한다. 이는 프로젝트 전체에 적용된다. - 슬래시(/)로 시작하면 하위 디렉토리에 적용되지 않는다. - 디렉토리는 슬래시(/)를 끝에 사용하는 것으로 표현한다. - 느낌표(!)로 시작하는 패턴의 파일은 무시하지 않는다. ◽️ Glob 패턴 정규표현식을 단순하게 만든 것이다. - 애스터리스크(*)는 문자가 하나도 없거나 하나 이상을 의미한다. - [abc]는 중괄호 안에 있는 문자 중 하나를 의..
git log라는 명령어를 좀 더 유용하게 조회하기 위한 명령어를 소개한다. ◽ 가장 최근 이력 2개만 조회하기 // 숫자는 조회하고 싶은 개수를 적으면 된다. git log -2 ◽ 최근 이력의 diff 소스 비교하기 bash에서 최근 커밋 이력의 달라진 점을 이전 소스 코드와 비교할 수 있다. 바로 조회할 수 있기 때문에 편할 듯 하다. // 가장 최근 이력 1개의 diff 보기 git log -p -1 // 가장 최근 이력 1개의 diff 보기 git log -p -2 ◽ 커밋 이력 중 수정된 파일 이름만 조회 // 수정된 파일 이름만보기 git log --name-only -1 ◽ git log 명령어 이후 빠져나오기 키보드의 q를 누른다. 그 외의 기타 명령어 ◽ git log 주요 옵션 -p ..