Git

YongWan·2023년 6월 6일
0

git

목록 보기
1/1
post-thumbnail

Git 기본 개념

Git 이란?

형상관리도구 중 하나로 프로젝트의 소스코드를 효과적으로 관리하는데 도움을 준다.

## Sourcetree 설치
Sourcetree란 git을 더 쉽게 활용하기 위해 도움을 주는 GUI툴이다.

Git 사용자 설정 및 세팅

  • 로컬에서 사용할 Git사용자 이메일과 이름을 설정
  • git config: Git에 관한 설정을 추가/변경/삭제하는 명령어
  • 설정파일 - System설정 파일/ Global설정 파일/ 로컬 설정 파일
System = windows내의 모든 계정
Global = windows내의 특정 한 계정
Local = windows내의 특정 한 계정의 특정 한 저장소

System 설정파일: 모든 시스템 사용자에게 적용(git config --system)
Global 설정파일: 한 사용자의 전치 Git Repository에 적용(git config --global
Local 설정파일: 하나의 Repository에만 적용(git config --local)

Global Git 사용자 설정

프로젝트 별로 설정할 필요가 없는 경우 ex)이름, 이메일

git config --global user.email"xxx@gmail.com"
git config --global user.name"Won Yong-wan"

설정 확인

git config --list

Github 계정에 ssh key 등록하기

프로젝트를 받아서 사용할때 ssh key가 필요한 경우가 있다?

본인의 컴퓨터에 ssh key를 만들어서 github에 적용해야 한다.
1. SSH Key 생성
1. Github접속 -> Setting -> SSH and GPg Keys
2. New SSH Key Click -> 내용 입력 -> Add SSH Key

Git 초기화 및 삭제

Git초기화

특정 폴더의 파일들을 git으로 관리하겠다고 선언하는 것을 Git 초기화라고 한다.

  • 초기화 할 대상 폴더에서 명령어 입력
git init

Git 초기화 시 폴더 안에 숨김 폴더로 .git 폴더 생성 (Local Config 등으로 구성)

Git삭제

단순히 .git 폴더를 삭제하면 된다.

  • mac의 경우 폴더를 삭제하는 명령어 입력
rm -rf.git

.gitignore란

사용자가 git에 등록(커밋)되지 않길 원하는 파일 또는 폴더들의 목록을 저장
.gitignore에 등록된 파일(폴더)들은 커밋 시 자동으로 제외됨

작성법

# = 주석
폴더: /폴더명
파일: 파일명.확장자
폴더 안 파일: /폴더명/파일명.확장자
폴더 안 특정 확장자 파일 전부: /폴더명/*.확장자
폴더 하위 모든 특정 확장자 파일 전부: /폴더명/**/*.확장자

gitignore.io

프로젝트의 개발환경에 따라 맞는 gitignore파일을 자동 생성해준다.

Git 기본 동작 원리

  • Working Directory: 작업하는 파일이 있는 디렉토리
  • Staging Area: Git에 등록할(커밋) 파일들이 올라가는 영역
  • Local Repository: 로컬 Git 프로젝트의 메타데이터와 데이터 정보가 저장되는 영역
  • Romote Repository: Github 등의 서비스를 통한 온라인 상의 저장소

Working Directory = (git add) => Staging Area
Staging Area = (git commit) => Local Repository
Local Repository = (git push) => Romote Repository
Romote Repository = (git fetch) => Local Repository
Local Repository = (git merge) => Working Directory

Git 기본 용어

  • origin: 원격(Gitgub 등의 온라인 저장소)에 있는 코드
  • head: 내가 지금 작업하고 있는 로컬 브랜치
  • add: Working Directory에서 Staging Area로 등록
  • commit: Staging Area에 등록된 파일을 Local Storage로 등록
  • Commit Message: commit 시 함께 작성해 저장하는 메시지(메모)
  • push: Local Storage에서 변경된 파일들을 Remote Repository로 등록
  • fetch: Remote Repository의 변경된 파일들을 Local Repository로 전달
  • merge: Local Repository의 변경사항을 Working Directory로 전달
  • Branch: 독립적으로 어떤 작업을 따로 진행하기 위한 가지
  • checkout: 사용할 다른 브랜치를 지정

Git 사용하기

clone

로컬에서 작업하기 위해 Romote Repository를 복제해 내 PC에 Local Repository로 저장하는 것
github에서 주소를 복사할때 보안상의 이유로 HTTPS보다는 SSH방식을 권장

git clone '주소'

Status

로컬 저장소에서 관리되는 파일의 상태 확인

git status

Add

변경된 파일 중 Repository에 올릴 파일들을 등록한다.

git add '파일명/디렉토리 경로'

// 수정된 모든 파일 등록
git add .

rm --cached

Staging Area에 add된 파일을 다시 Working Directory로 내린다.

git rm --cached 파일경로

// 모든 파일을 Working Directory로 내린다.
git rm -r --cached

log --decorate --graph

병합, 커밋등의 기록을 시각적으로 보여 준다.

git log --decorate --graph

Commit

Staging Area에 등록된 파일을 확인하고, 메시지 작성 후 커밋

git commit -m '메세지'

Push

Commit되어 로컬 저장소에서 변경 된 파일들을 원격 저장소로 전달한다.

git push origin '브렌치 이름'

Pull

원격 저장소의 변경사항을 로컬 저장소로 가져옴과 동시에 내 작업 소스에 합친다.

git pull origin '브렌치 이름'

Fetch

원격 저장소의 소스를 로컬 저장소로 받아와 일치 시킨다.(내 작업 소스에는 반영 X)

Branch

  • '나무가지'를 의미
  • 기존에 만들어 놓은 버전(Main)을 복사해 새로운 가지를 만들어 다른 방향으로 작업을 이어 나가는 것을 의미
// branch 생성
git branch 브랜치명

// branch 전환
git checkout 브랜치명

Merge

각각의 브랜치에서 작업이 완료된 후 통합 브랜치(Main)로 모아 합치는 작업

// 기준이 되는 버전(Main)으로 이동 후 병합하려는 대상 브랜치 입력
git merge 병합하려는 브랜치명

Conflict 해결

  • Branch를 Merge 할 때 발생할 수 있다.
  • 같은 파일 같은 부분을 수정한 브랜치들을 Merge할 때 발생

Fork 복제

다른사람의 원격 저장소에서 어떤 부분을 수정하거나 추가 기능을 넣고 싶을때 해당 원격 저장소를 내 원격 저장소에 그대로 복제하는 것

Pull Request

다른 사람에게 내 브랜치를 Merge 해 달라고 하는 요청

  • 사례1: 한 원격 저장소에서 내 브랜치를 Merge 하기 전 피드백을 요청
  • 사례2: Fork뜬 저장소에서 원본 저장소에 개발 완료 후 원본 저장소에 Merge를 요청
어떤 부분을 어떻게 수정했는지,
피드백 요청하는 부분은 정확히 어떤 파일의 어느 부분인지 기입한다.

0개의 댓글