2 분 소요

GIT

Git을 사용하는 기본적인 방법과 git 허브와 연동하는 방법을 알아보자.

깃을 설치하고 setting을 보는 방법

git config --list --show-origin

User name과 email을 세팅해줘서 commit시에 알아볼수 있도록 한다.

git config --global user.name "Jihwan Kim"
git config --global user.email cuchoco@naver.com

git 레포지토리 만들고 파일 추가하기

cd /c/Users/cucho/Documents
mkdir my_project
cd my_project/
git init  

touch README.md
git add README.md
git status

git commit -m 'first commit'
git log

파일이 생성되거나 수정되었을때 add를 해주어야 파일이 스테이징 영역에 메타데이터가 저장이 되고 commit을 해주어야 깃에 저장이된다


원격저장소 생성하기

먼저 깃헙에서 repository를 생성하고 주소를 가져와 로컬 디렉토리에서 remote add 해준다.

git push를 사용하면 로컬의 commit된 내용들이 원격저장소로 올라간다.

git push test main

git pull origin 브런치명 --allow-unrelated-histories # 원격저장소에 다른 파일이 이미 있는경우 사용.

git fetch는 은 로컬에는 없지만, 리모트 저장소에는 있는 데이터를 모두 가져온다.
그러면 리모트 저장소의 모든 브랜치를 로컬에서 접근할 수 있어서 언제든지 Merge를 하거나 내용을 살펴볼 수 있다.

git fetch <remote> # 현재 <remote>는 test
git remote show test # 리모트 저장소의 구체적인 정보 확인
git remote rename test test2 # 리모트 저장소 이름 바꾸기
git remote remove test # 원격 저장소 삭제

git alias

alias.** <명령어> 형식으로 **만 쳐도 <명령어> 실행가능.

git config --global alias.co checkout 
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

Git Branch

Git이 브랜치를 다루는 과정을 이해하려면 우선 Git이 데이터를 어떻게 저장하는지 알아야 한다.
Git은 데이터를 Change Set이나 변경사항(Diff)으로 기록하지 않고 일련의 스냅샷으로 기록한다.
커밋하면 Git은 현 Staging Area에 있는 데이터의 스냅샷에 대한 포인터, 저자나 커밋 메시지 같은 메타데이터, 이전 커밋에 대한 포인터 등을 포함하는 커밋 개체(커밋 Object)를 저장한다.
이전 커밋 포인터가 있어서 현재 커밋이 무엇을 기준으로 바뀌었는지를 알 수 있다.
최초 커밋을 제외한 나머지 커밋은 이전 커밋 포인터가 적어도 하나씩 있고 브랜치를 합친 Merge 커밋 같은 경우에는 이전 커밋 포인터가 여러 개 있다.

파일이 3개 있는 디렉토리가 하나 있고 이 파일을 Staging Area에 저장하고 커밋하는 예제를 살펴 보자. 파일을 Stage 하면 Git 저장소에 파일을 저장하고(Git은 이것을 Blob이라고 부른다) Staging Area에 해당 파일의 체크섬을 저장한다(SHA-1을 사용한다).

git add README test.rb LICENSE
git commit -m 'The initial commit of my project'

이 작업을 마치고 나면 Git 저장소에는 다섯 개의 데이터 개체가 생긴다. 각 파일에 대한 Blob 세 개, 파일과 디렉토리 구조가 들어 있는 트리 개체 하나, 메타데이터와 루트 트리를 가리키는 포인터가 담긴 커밋 개체 하나이다.

다시 파일을 수정하고 커밋하면 이전 커밋이 무엇인지도 저장한다.

Git의 브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것이다. 기본적으로 Git은 master브랜치를 만든다. 처음 커밋하면 이 master브랜치가 생성된 커밋을 가리킨다. 이후 커밋을 만들면 master브랜치는 자동으로 가장 마지막 커밋을 가리킨다.

새 브랜치 생성하기

git branch testing

새로 만든 브랜치도 지금 작업하고 있던 마지막 커밋을 가리킨다.

지금 작업 중인 브랜치가 무엇인지 Git은 어떻게 파악할까. 다른 버전 관리 시스템과는 달리 Git은 ‘HEAD’라는 특수한 포인터가 있다. 이 포인터는 지금 작업하는 로컬 브랜치를 가리킨다. 브랜치를 새로 만들었지만, Git은 아직 master 브랜치를 가리키고 있다. git branch 명령은 브랜치를 만들기만 하고 브랜치를 옮기지 않는다.

git log --oneline --decorate 

git checkout testing

vim test.rb
git commit -a -m 'made a change'  # -a 자동으로 add 후 commit

git checkout master

vim test.rb
git commit -am 'made other changes'

git log --oneline --decorate --graph --all


Branch와 Merge

git checkout -b iss53 # iss53 브랜치를 생성과 동시에 체크아웃

수정 사항이 완료되면 다시 merge하도록 한다

git checkout main

git merge iss53

카테고리:

업데이트:

댓글남기기