[GIT] GIT 기본 개념 정리

오리너구리·2024년 5월 31일
0

개발 공부 정리

목록 보기
6/9
post-thumbnail

Git 과 GitHub란?

Git과 GitHub의 개념

Git :

코드의 변경점을 기록하는 것

소스코드 및 파일의 변경내역을 저장하는 분산 버전 관리 시스템

GitHub :

백업과 공유가 가능한 온라인 코드 저장소

Git을 관리해주는 웹 호스팅 서비스

Github의 필요성

  1. 버전관리 : 내가 만들어 냈던 결과물의 기록

    게임할 때 세이브 포인트 두는 것과 비슷한 이유!

  2. 협업 도구: 효율적인 협업을 위한 여러 기능을 가지고 있음

  3. 개발자 사이의 커뮤니티 형성 :

    다른 개발자들의 프로젝트 코드를 볼 수 있다. → 오픈 소스에 기여할 수 있다.


명령어

명령어를 입력하는 방식

  1. CLI (Command Line Interface)

    직접 명령어를 입력하는 방식

  2. GUI (Graphic User Interface)

    마우스 클릭으로 명령하는 방식

필수 리눅스 명령어

❗ 개발자 입장에서 완전 기본. 꼭 외우기

❗ window 는 git bash 에서 진행하기

  • ~ 표시는 home 폴더라는 뜻
  • 숨겨진 폴더는 왜 숨겨놨을까? → 개발자가 아닌 사람들은 굳이 볼 필요가 없어서.
명령어의미비고
pwdprint working directory현재 내가 작업하고 있는 폴더를 보여줘
lslist내 폴더 안에 있는 폴더, 파일 내역을 보여줘숨겨진파일은 보통 . 으로 시작함
ls -alist all숨겨진 파일까지 모두 보여줘
cd <폴더명>change directoryls 에서 확인된 폴더로 이동폴더명/폴더명 으로 한번에 더 깊은 폴더로 이동가능
..한단계 상위 폴더로 이동
mkdirmake directory현재 경로에 폴더를 생성
touch 파일명현재 경로에 파일 생성더 정확히는 파일의 생성과 날짜, 시간을 변경하는 명령어

Git 명령어

기본명령어

명령어의미비고
git init코드관리를 시작함
git add저장할 코드를 추가함
git add .변경사항을 전부 저장할거라고 지정
git commit -m "등록할 메세지"등록할 메세지와 함께 코드를 저장
git status상태 확인 (저장여부, 변경상태)Untracked/Tracked 로 분류됨
git log저장 내역 확인log가 길면 q를 눌러 빠져나올수있음
git --versiongit 버전 확인
git diff최근 commit 한 내용과 현재 폴더의 변경사항 확인

협업용 명령어

명령어의미
git push수정한 코드를 git hub에 반영
git cloneGithub의 코드 복사
git pull다른 사람이 변경한 코드를 내 코드로 가져옴
git merge브랜치를 결합함

stash 명령어

명령어의미
git stash코드를 임시저장
git stash list여러번 stash 했을 때 저장한 stash 목록 확인
git stash apply했던 작업 다시 가져오기
git stash drop스택에 남아있는 stash 제거
git stash show -pgit apply -R

branch 명렁어

git branch현재 브랜치 목록과 현재 브랜치 확인
git branch 브랜치이름현재 시점에 브랜치 생성브랜치이름 뒤에 main 입력할경우 main에서 파생되는 브랜치 생성
git checkout 브랜치이름기재한 브랜치로 이동
git branch -D 브랜치이름기재한 브랜치 삭제

명령어 사용 예시

Git 저장소 만드는 방법

mkdir git-test // 작업할 디렉토리 생성

cd git-test // 생성한 디렉토리로 이동

git init // 현재 디렉토리를 Git 저장소로 만듦

파일 상태 확인하는 방법

git status

status를 사용하면 파일의 상태에 따라 Untracked와 Tracked로 분류된다.

Untracked : 파일 생성 후 한번도 git add하지 않은 상태 (관리 대상이 아님)

Tracked : git이 관리하는 파일

  • Unmodifed : 최근의 커밋과 비교했을 때 바뀐 내용이 없음
  • Modified : 최근 커밋과 비교했을 때 바뀐내용이 있음
  • Staged : 파일이 수정되고 나서 Staging area에 올라와 있는 상태 (git add 후의 상태)

변경사항 확인하는 방법

git diff

add 하기 전 최근 commit한 내용과 현재 폴더의 변경사항을 확인


Branch

나뭇가지라는 뜻 그대로 가지를 뻗어나오는 것처럼 여러명이 동시에 작업을 할 때 다른 사람의 작업에 영향을 주거나 받지 않도록 각자의 가지를 만드는것

깨진 구슬 50개, 낡은 나뭇가지 40개 모으는 퀘스트를 파티로 효율적으로 깨기위해서

다른 곳에서 모으러 흩어지는거 각자 모으고 나중에 merge로 합쳐서 npc 제출하면되는거임

Branch strategy

브랜치를 효율적으로 사용하기 위한 전략

Branch의 종류

Main(master) , Develop, Release, Feature, Hotfix 이렇게 다섯 종류의 브랜치를 사용한다.

각 Branch 역할

  1. main(master)

    • 항상 안정적이여아하는 곳
    • 실제로 배포되었던 애들이 있는 곳.
    • 커밋이 일어나지 않음
  2. develp

    • 개발 브랜치
    • 개발을 할 때 pull 받아야하는 브랜치
    • 개발을 진행하는 곳이기 때문에 버그가 존재할 수 있다.
    • 피쳐 브랜치를 따야하는 곳
  3. release

    • 배포 브랜치
    • only 버그 수정만을 위한 브랜치
    • 여기서 개발하면 헬게이트가 열림
    • merge 시에 dev와 main 둘다 해줘야함
  4. feture

    • 피쳐 브랜치
    • 개발을 하는데 사용되는 실험실
    • 개발하다 망치면 버려도 되는 곳
    • 피쳐 브랜치 하나당 기능 하나를 개발하면 된다
    • 데브에서 다 같이 개발하면 꼬일 수 있어서 사용하는 독립된 공간
  5. hotfix

    • 핫픽스 브랜치
    • 급하게 수정되어야하는 이슈를 빠르게 수정하는 곳
    • 릴리즈와 마찬가지로 dev와 main에 둘다 merge 해줘야한다.

Conflict

충돌 해결하는 방법

충돌 해결하고 다시 커밋하라고 뜰 때


1. <<<<<HEAD 삭제
2. =====삭제
3. >>>>>어쩌구 삭제
4. 원하는 코드로 수정 
5. git add , commit, push
profile
오리너구리입니다

0개의 댓글