📚 TIL
Pro Git
🍏 시작하기
버전 관리 시스템
- 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
DVCS(분산 버전 관리 시스템)
- DVCS에서의 클라이언트는 저장소를 히스토리와 더불어 전부 복제
- 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있음
Git의 특징
- 파일이 달라지지 않았으면 파일을 새로 저장하지 않고 이전 상태의 파일에 대한 링크만 저장
- 데이터를 스냅샷의 스트림처럼 취급
- 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 필요 없음
- 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리
- Git으로 무얼 하든 Git 데이터베이스에 데이터가 추가됨
파일의 세 가지 상태
- Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것
- Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것
- Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태
Git의 세 가지 단계
- Git 디렉토리 : Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
- 워킹 트리 : 프로젝트의 특정 버전을 Checkout한 것
- Staging Area : Git 디렉토리에 있음, 단순한 파일이고 곧 커밋할 파일에 대한 정보 저장
Git이 하는 일
- 워킹 트리에서 파일 수정
- Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만듦
- Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장
- Git 디렉토리에 있는 파일들은 Committed 상태
- 파일을 수정하고 Staging Area에 추가했다면 Staged
- Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified
도움말을 보는 방법
$ git help <verb>
$ man git-<verb>
🍏 Git의 기초
Git 저장소 만들기
(1) 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법
- 프로젝트의 디렉토리로 이동해서 명령 실행
$ git init
- Git 저장소에 파일을 추가하고 커밋
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
(2) 다른 어딘가에서 Git 저장소를 Clone 하는 방법
- git clone <url> 명령으로 저장소를 Clone
$ git clone https://github.com/libgit2/libgit2
파일의 라이프사이클
워킹 디렉토리의 모든 파일 : Tracked(관리대상임)와 Untracked(관리대상이 아님)로 나눔
- Tracked 파일 : 이미 스냅샷에 포함돼 있던 파일
- Unmodified(수정하지 않음)와 Modified(수정함) 그리고 Staged(커밋으로 저장소에 기록할) 상태 중 하나
- Untracked 파일 : 워킹 디렉토리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일
- 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식
- 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋
파일의 상태 확인하기
- git status 명령 사용
- git status -s 또는 git status --short 처럼 옵션을 주면 현재 변경한 상태를 짤막하게 보여줌
파일을 새로 추적하기
- git add 명령으로 파일을 새로 추적
Modified 상태의 파일을 Stage 하기
- 커밋을 하면 마지막으로 git add 명령을 실행했을 때의 버전이 커밋
- git add 명령을 실행한 후에 또 파일을 수정하면 git add 명령을 다시 실행해서 최신 버전을 Staged 상태로 만들어야 함
파일 무시하기
- 어떤 파일을 무시하려면 .gitignore 파일을 만들고 그 안에 무시할 파일 패턴을 적음
변경사항 커밋하기
- 커밋하기 전에 모든 것이 Staged 상태인지 확인한 후 git commit 을 실행하여 커밋
$ git commit
Staging Area 생략하기
- git commit 명령을 실행할 때 -a 옵션을 추가하면 Git은 Tracked 상태의 파일을 자동으로 Staging Area에 넣음
파일 삭제하기
- git rm 명령으로 Tracked 상태의 파일을 삭제한 후에(정확하게는 Staging Area에서 삭제하는 것) 커밋
- 이 명령은 워킹 디렉토리에 있는 파일도 삭제하기 때문에 실제로 파일도 지워짐
- --cached 옵션을 사용하여 명령을 실행하면 워킹 디렉토리에 있는 파일은 지우지 않고 남겨둘 수 있음
파일 이름 변경하기
- mv 명령으로 아래와 같이 파일 이름을 변경할 수 있음
$ git mv file_from file_to
커밋 히스토리 조회하기
- git log 명령을 실행하면 저장소의 커밋 히스토리를 시간순으로 보여줌
되돌리기
- 파일 수정 작업을 하고 Staging Area에 추가한 다음 --amend 옵션을 사용하여 커밋을 재작성 할 수 있음
- 한 번 되돌리면 복구할 수 없기에 주의
$ git commit --amend
리모트 저장소 확인하기
- git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소 확인
리모트 저장소 추가하기
- git remote add <단축이름> <url> 명령 사용
리모트 저장소를 Pull 하거나 Fetch 하기
- 로컬에는 없지만, 리모트 저장소에는 있는 데이터를 모두 가져오는 명령
$ git fetch <remote>
- git pull 명령으로 리모트 저장소 브랜치에서 데이터를 가져올 뿐만 아니라 자동으로 로컬 브랜치와 Merge 시킬 수 있음
리모트 저장소에 Push 하기
- git push <리모트 저장소 이름> <브랜치 이름> 으로 서버에 push
태그 조회하기
- git tag 명령으로 (-l, `--list`는 옵션) 이미 만들어진 태그가 있는지 확인
태그 붙이기
(1) Lightweight 태그
- 브랜치와 비슷한데 브랜치처럼 가리키는 지점을 최신 커밋으로 이동시키지 않음
- 파일에 커밋 체크섬을 저장하고 다른 정보는 저장하지 않음
(2) Annotated 태그
- Git 데이터베이스에 태그를 만든 사람의 이름, 이메일과 태그를 만든 날짜, 그리고 태그 메시지도 저장
- tag 명령을 실행할 때 -a 옵션 추가
Git Alias
- git config 를 사용하여 각 명령의 Alias을 쉽게 만들 수 있음
🍏 GitHub
GitHub
- 가장 큰 Git 저장소 호스트
프로젝트 Fork
- “Fork” 하면 GitHub이 프로젝트를 통째로 복사해줌
새 저장소 만들기
- “New repository” 버튼을 클릭하면 저장소를 만드는 폼으로 이동
- 프로젝트 이름을 넣는 것만 필수, 다른 것은 생략 가능
- “Create Repository” 버튼을 클릭하면 <user>/<project_name> 위치에 GitHub 저장소가 생김
😁 오늘 한 일
📕 Git, HTML, CSS, JavaScript 공부하기
- 오늘은 Git이랑 GitHub 사용법을 공부하고 직접 커밋을 해보았어요
- 아래 링크 교재의 1장, 2장, 6장을 참고했습니다
https://git-scm.com/book/ko/v2
Git - Book
git-scm.com
- 컴퓨터, 그램, 맥북 세 기기를 사용하니까 따로 다 설정을 해줘야돼요ㅠ
- 코드잇에도 Git 강의가 있어서 좀 들었는데 빨리 배워야해서 교재로 공부했어요!
- 그리고 HTML, CSS, JavaScript로 TodoList를 만들어보았어요
- 블로그를 참고하지말고 전문사이트를 보고 만들어보라하셨는데
- 아래 사이트를 참고했습니다!
MDN Web Docs
MDN 웹 문서 사이트는 HTML, CSS, 및 웹 사이트와 프로그레시브 웹 앱을 위한 API를 포함한 오픈 웹 기술에 대한 정보를 제공합니다. 또한 Firefox 개발자 도구와 같은 Mozilla 제품을 위한 개발자 지향 문
developer.mozilla.org
🍁 메이플스토리M하기
- 오늘 메이플스토리M에 신직업이 나왔어요!
- 패스파인더가 나왔는데 레벨업하면 본섭에 좋은걸 준대서 하고있어요
- 근데 하다가 게임이 자꾸 꺼져서 불편..
🥟 즉석떡볶이 먹기
- 오늘은 친구랑 즉석떡볶이를 먹었어요!
- 즉석떡볶이는 넣고 싶은 사리가 너무 많아요
- 라면 쫄면 만두 김말이 소시지 깻잎 다넣고싶었는데 김말이는 안넣었어요
- 김말이 빼고 다 넣었네요! 오랜만에 떡볶이가 먹고싶었는데 짱 맛있었어요 ㅋㅋ
'코딩 > TIL' 카테고리의 다른 글
TIL #210117 (0) | 2021.01.17 |
---|---|
TIL #210116 (0) | 2021.01.16 |
TIL #210114 (0) | 2021.01.14 |
TIL #210113 (0) | 2021.01.13 |
TIL #210112 (0) | 2021.01.12 |