Git 기초 사용법 1
Git 과 GitHub
* Git
프로그램이 아닌 버전관리 툴 (도구)
Git은 데이터를 Change Set이나 변경사항(Diff)으로 기록하지 않고 일련의 스냅샷으로 기록한다.
커밋하면 Git은 현 Staging Area에 있는 데이터의 스냅샷에 대한 포인터, 저자나 커밋 메시지 같은 메타데이터, 이전 커밋에 대한 포인터 등을 포함하는 커밋 개체(커밋 Object)를 저장한다. 이전 커밋 포인터가 있어서 현재 커밋이 무엇을 기준으로 바뀌었는지를 알 수 있다.
최초 커밋을 제외한 나머지 커밋은 이전 커밋 포인터가 적어도 하나씩 있고 브랜치를 합친 Merge 커밋 같은 경우에는 이전 커밋 포인터가 여러 개 있다.
* Git Hub
Git에서 원격으로 Git Hub 저장소 만들어 저장하기 위한 수단
Git Commit
- git commit -m "변경된 내용 입력"
git commit 으로 커밋하면 먼저 루트 디렉토리와 각 하위 디렉토리의 트리 개체를 체크섬과 함께 저장소에 저장한다. 그다음에 커밋 개체를 만들고 메타데이터와 루트 디렉토리 트리 개체를 가리키는 포인터 정보를 커밋 개체에 넣어 저장한다. 그래서 필요하면 언제든지 스냅샷을 다시 만들 수 있다.
Git Log 확인

- git log
내가 commit으로 저장한 순간순간 을 보여줌
마지막 줄 Commit 할때 입력한 메시지로 확인한다.
Author : Commit으로 등록한 계정을 알 수 있다.
hash값 앞 7자리로 구분해 불러온다.
Git 브랜치 - 브랜치란 무엇인가
- git branch -M main
모든 버전 관리 시스템은 브랜치를 지원한다. 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.
사람들은 브랜치 모델이 Git의 최고의 장점이라고, Git이 다른 것들과 구분되는 특징이라고 말한다. 당최 어떤 점이 그렇게 특별한 것일까. Git의 브랜치는 매우 가볍다. 순식간에 브랜치를 새로 만들고 브랜치 사이를 이동할 수 있다. 다른 버전 관리 시스템과는 달리 Git은 브랜치를 만들어 작업하고 나중에 Merge 하는 방법을 권장한다. 심지어 하루에 수십 번씩해도 괜찮다. Git 브랜치에 능숙해지면 개발 방식이 완전히 바뀌고 다른 도구를 사용할 수 없게 된다.
Git 명령어 및 실행 순서
- git 설치 확인 : git --version
- 폴더에서 git bash 실행 'git bash here'
- git init : git 초기화
- ls : git 저장할 폴더에 파일 보기
- git Stage에 파일 올리기 : git add 파일명.파일타입
- git commit -m "커밋 내용 입력(변경된 내용 입력)"
- git status : git 파일 상태 보기 (변경된 파일 확인)
- git add : stage에 파일 올리기
- git log : 내가 commit으로 저장한 순간순간 을 보여줌
마지막 줄 Commit 할때 입력한 메시지로 확인한다.
Author : Commit으로 등록한 계정을 알 수 있다.
hash값 앞 7자리로 구분해 불러온다.
<불러오기>
- Checkout : 과거 commit한 시점으로 돌아갈수있다.
git checkout hash코드7자리 입력하면 해당 시점의 파일 불러온다.
다시 현재 파일로 돌아오기 : git checkout -
<Git Hub에 올리기 (공유하기 위해 Cloud에 넣는 것)>
git remote add first(변수명) https://github.com/내github 명.git
Git Hub저장소에 Push 명령어로 파일 올리기
git push -u first(깃허브 변수명) main(branch 명)
< Git Hub 내려받기>
Git hub (저장소) URL 복사해서 내려받기할 폴더에 Git bash here 실행
Clone : 덮어 씌우기 (기존 파일에 덮어씌워짐) : 처음작업할때 빈공간에 Clone으로 불러옴
*** URL 뒤에 .(마침표)를 입력하면 프로젝트 폴더 생성되지않고 내려받을 수 있다.
Pull : 체크해서 변경된 내용만 가져옴