주뇽's 저장소

Git 기본 사용법 본문

Git

Git 기본 사용법

뎁쭌 2023. 7. 3. 21:57
728x90
반응형

Git

Git의 배경

Unix라는 대형컴퓨터 운영체제를 리눅스 토발즈가 개인용 컴퓨터 OS로 발전시키며 이것이 리눅스이다.

  • GNU: 공개 소프트웨어 프로젝트
    어떤 소프트웨어A를 누구에게나 공개 단, 공개된 소프트웨어 정보를 받았을 시 GPL 라이센스를 따야함
  • GPL (General Public License): A소프트웨어로 B소프트웨어를 만들 시 B소프트웨어는 무조건 공개되어야 한다.

리눅스를 수 많은 개발자들이 발전시켜가는 과정에서 협업이 필요한데 각자가 개발한 파일을 합쳐야 하는 문제점등이 존재하여 이를 해결하기 위해서 Bitkeeper라는 분산 버전 관리 시스템을 상용화시킴 (Distribution Version Contrl System)사용자가 많아짐에 따라 Bitkkeper가 유료화서비스를 시작하려 하자 리눅스 토발즈가 만든 버전 관리 시스템이 바로 Git이다

Github

  • 모든 개발자들의 놀이터
  • 개발자들의 코드가 저장되는 클라우드는 저장소 Git과는 다르기 때문에 GPL라이센스를 따르지않는다
  • 마이크로소프트가 Github를 인수
  • Public : 나의 모든 소스를 공개
  • Private : 나의 모든 소스를 비공개
  • MIT라이센스 : 공개된 소스코드로 개발을 해도 공개 의무가 없는 MIT라인센스를 따른다.

실습

1. 저장소 생성 및 깃허브 연동

  1. 저장소 생성디렉토리 구조
    • index.html
    • → git.init 명령어를 통해서 숨겨진 .git 폴더가 생성이 되며 깃 관리 이 숨겨진 폴더를 삭제하면 본래 기본 폴더가 되며 복사할 때는 숨겨진 폴더도 같이 해줘야 한다.
  2. GIT
  3. echo "Hello World" > index.html ## 위 명령어로 파일 하나 생성 git init . ## 위 명령어로 시작 ls -a ## 위 명령어로 숨겨진 폴더 확인
  4. 깃 저장소 종류

Git은 분산형 관리 시스템

  • 로컬 저장소
    • 자기 컴퓨터에 있는 저장소
  • 원격 저장소
    • 자기 컴퓨터가 아닌 외부 저장소
    • 보다 협업을 쉽게 하기 위해서 공통된 서버 개념에 저장소라고 생각
    • Github을 이용하여 원격 서버 저장소를 이용가능
  1. Github에서 저장소 하나 생성
    • 생성한 저장소를 로컬 저장소에 등록
    • git remote add origin "생성한 저장소 주소" ## 위 명령어를 통해 로컬 저장소에 원격 저장소를 등록 git remote -v ## 등록된 원격 저장소 확인

2. 커밋 및 전송하기

생성한 index.html 파일을 전송하려면 총 3가지 단계가 필요하다.

git status 
## 위 명령어로 현재 상태를 확인 가능하다.
  1. 작업하고 있는 working 폴더 → 중간 다리 역할인 스테이지 영역→ 스테이지 영역에 등록하는 과정이 필요
  2. Git은 코드에 이력을 기록하기 위해 상태라는 개념이 존재한다
git add index.html
## 위 명령어로 index.html 파일을 스테이지 영역으로 등록

b. 중간 다리 역할인 스테이지 영역 → 원격 Git 저장소 폴더

→ 스테이지 영역에서 원격 저장소 폴더 로 등록하는 과정이 필요

원격 저장소에 등록하기 위해서는 사용자정보를 입력해 주어야 한다.

git config user.email "자신의 이메일"
git config user.name "이름"

git commit -m "Add:index.heml"
## 위 명령어로 원격 저장소 폴더에 등록

git log 
## 위 명령어로 기록 확인

만약 파일을 수정한 경우

add → commit 과정이 필요

c. 원격 저장소 폴더 → 원격 저장소

→ 로컬에 있는 원격 저장소 폴더에서 실제 원격 저장소로 전송하는 과정이 필요

git push origin main
## 위 명령어로 저장소에 전송

Working 디렉토리 → 스테이즈 영역 → Git 원격 저장소 폴더(.git) → Git원격 저장소

                                        add                     -           commit              -                  push

애커푸 애커푸 애커푸!!!

3. 저장소 복제 및 수정

저장소를 만드는 2가지 방법

  1. git init . 명령어를 이용하여 생성
  2. → 폴더 → .git폴더를 새롭게 생성
  3. clone 명령어를 이용하여 복제
  4. → .git폴더를 복제

하나의 원격저장소를 이용하여 다수의 개발자가 협업하기 위하여 저장소 복제!

  • 저장소를 복제할 폴더로 이동
git clone "복제할 저장소가 있는 github 주소"
## 위 명령어로 github에 저장된 저장소를 현재 폴더로 복제
  • 복제된 저장소에서 수정 하기
## index.html 파일을 수정
git add index.html 
git commit -m "커밋 메시지"
git push origin main
## 애컴푸를 이용하여 수정된 파일을 원격 저장소로 전송

## 만약 커밋이 안된다면 git config 명령어를 이용하여 사용자를 등록해준다.
  • 원격 저장소에서 수정된 파일을 로컬 저장소로 옮겨오기
git pull
## 위 명령어를 통해서 원격 저장소에 저장되어 있던 내용들을 로컬 저장소로 가져온다

협업 또는 여러대의 컴퓨터로 github작업시

git pull → git add → git commit -m “” → git push origin main

풀 애 컴 푸 풀 애 컴 푸 !!

4. 브랜치 생성 및 병합

보다 효율적인 코드 수정과 협업을 위한 브랜치 알아보기

브랜치 : 가상의 폴더를 만들어 코드의 수정과 관리를 쉽게 하기 위함

→ 새로운 기능을 추가하는 등에 작업을 할 때 실수가 생길 수 있다. 이 때 테스트를 통해 코드를 확인 후 문제가 없다면 병합하는 과정

ex) 게임의 경우 업데이트, 버그패치 또는 핫픽스와 같은 경우

  • 새로운 브랜치 생성
git branch "원하는 브챈치 이름"
git branch -v 
## 현재 존재하는 브랜치를 확인 *표시가 있는 브랜치가 현재 선택

git checkout "생성한 브랜치 으름"
## 위 명령어로 생성한 브랜치를 작업 브랜치로 선택

브랜치 생성 명령을 하기 전 마지막 커밋한 작업부터 새로운 브랜치가 생긴다 ?!

가상의 새로운 독립된 작업공간이 생기며 그 공간에서 원하는 작업을 수행한다.

  • 작업이 끝난 브랜치를 병합

2가지 병합 방법이 존재한다.

  1. fast-foward
  2. 3way

fast-foward 방식

브랜치를 병합하기 위해서는 기준이 되는 브랜치로 변경해야 한다 → main브랜치로 이동

git checkout main
## 병합할 브랜치로 이동
git merge "작업이 끝난 브랜치"
## 작업이 완료된 브랜치와 main 브랜치를 병합

5. 리셋 및 리버트

잘못된 커밋을 삭제하거나, 이전 코드로 되돌리는 방법

index.html 파일을 수정 후 add , commit 명령어로 stage영역에 등록

reset 명령어를 이용하여 commit 삭제

  • reset을 하기 위해서는 되돌아 갈 지점에 ID를 알아야 하며 마지막 커밋은 HEAD로 표현 가능하다
  • ^ 명령어를 이용하면 해당 커밋지점에서 이전이라는 의미이다.
  • ex) HEAD^ → 마지막 커밋 이전
git reset "되돌아 갈 지점"

## git reset HEAD^ 

3 가지 리셋 모드가 존재

  1. soft : 커밋 기록만 삭제하며 작업 내용을 유지
  2. mixed : 커밋 기록만 삭제하며 작업 내용을 유지
  3. hard : 커밋 기록뿐만 아니라 작업 내용삭제
  4. 신중하게 사용해야 한다.

아무런 옵션을 주지 않는다면 mixed모드로 실행한다.

Reset을 이용할 때는 로컬에서만 사용해야 하며 만약 공개된 저장소를 수정할 경우 Revert 명령어를 사용하여야 한다.

revert 명령어를 이용하여 커밋 삭제

커밋을 삭제하지 않고 돌아가고 싶은 커밋 지점에 커밋을 새롭게 만들어서 전송하는 방식이다.

git revert HEAD
## 마지막 커밋만 필요함
## 리버트 커밋 메시지 작성 후 확인

'Git' 카테고리의 다른 글

Markdown이란  (0) 2023.08.19